home *** CD-ROM | disk | FTP | other *** search
/ Compendium Deluxe 1 / LSD Compendium Deluxe 1.iso / a / programming / assembly / kcx25asc.lha / KCX / Prefs.Asm < prev    next >
Encoding:
Assembly Source File  |  1993-06-21  |  312.7 KB  |  12,978 lines

  1.         NOLIST
  2. * This can only be assembled under DEVPAC V3.01 since there are many opcodes
  3. * only DEVPAC 3.01 understands. As far as I know.
  4.  
  5. DEBUG        SET    0
  6.  
  7.         OPT    ow-,o+,ow6+,NODEBUG,NOLINE,ALINK
  8.  
  9. *AUTO:        smake    KCX
  10.  
  11. ;* $Revision Header built automatically *************** (do not edit) ************
  12. ;*
  13. ;* © Copyright by GuntherSoft
  14. ;*
  15. ;* File             : SnakeSYS:DevPac/Sources/KCX/Prefs/KCommodity.Asm
  16. ;* Created on       : Friday, 23-Oct-92 20:43:55
  17. ;* Created by       : Kai Iske
  18. ;* Current revision : V2.5
  19. ;*
  20. ;*
  21. ;* Purpose
  22. ;* -------
  23. ;*     KCommodity`s external Prefs-Configurator
  24. ;*
  25. ;* Revision V2.5
  26. ;* --------------
  27. ;*     --- Initial release ---
  28. ;*
  29. ;*********************************************************************************
  30.                                                
  31.         XDEF    _CxBase
  32.         XDEF    _SysBase
  33.         IFGT    DEBUG
  34.         XREF    KPrintF
  35.         ENDC
  36.  
  37.         INCLUDE    KCXBase.i
  38.         INCLUDE    KCX_Lib.i
  39.         INCLUDE    KCX.i
  40.  
  41.         INCLUDE    Rexx/Errors.i
  42.         INCLUDE    Rexx/Rxslib.i
  43.         INCLUDE    Rexx/Storage.i
  44.  
  45.  
  46.  
  47.         INCLUDE    Libraries/ReqTools.i
  48.         INCLUDE    Libraries/ReqTools_Lib.i
  49.  
  50.         INCLUDE    Misc/MyMacros.i
  51.  
  52.         IFGT    DEBUG
  53.         INCLUDE    Misc/Debug.i
  54.         ENDC
  55.  
  56.  
  57.  
  58. **********************************************************************
  59. *         Local parameters for font-sensitive window open up         *
  60. **********************************************************************
  61.         CARGS    #-(4+4+2+2+2+2),OffY.W,OffX.W,FontY.W,FontX.W,FontPtr.L
  62.  
  63.         SECTION    MyCode,CODE
  64.  
  65. Main        move.l    $4.w,_SysBase
  66.         bra    START
  67.  
  68.  
  69. **********************************************************************
  70. *                  Versionstring for C:Version-Prg                   *
  71. *       I place it right here, so that it can be found quickly       *
  72. **********************************************************************
  73. VersionString    dc.b    "$VER:KCommodity "
  74.         REVISION
  75.         dc.b    " ("
  76.         REVDATE
  77.         dc.b    ")",0
  78.         EVEN
  79. BackPortName    dc.b    "KCX-BackPort",0
  80. PrefsPortName    dc.b    "KCX-PrefsPort",0
  81.         EVEN
  82.  
  83. **********************************************************************
  84. *                   Changes a HotKey for a Filter                    *
  85. * A0 = Pointer to window                                             *
  86. * A1 = Pointer to windowtitle                                        *
  87. * A2 = Pointer to filter                                             *
  88. * A3 = Pointer to new filterdescription                              *
  89. * A5 = Pointer to old filterdescription                              *
  90. **********************************************************************
  91. RemakeHotKey    CARGS    #-20,.OldDesc.L,.NewDesc.L,.Filter.L,.Title.L,.Window.L
  92.         movem.l    RegsAll,-(sp)
  93.  
  94.         move.l    a5,d7
  95.         link    a5,#-(20+HOTKEYSIZE)
  96.  
  97.         move.l    a0,.Window(a5)
  98.         move.l    a1,.Title(a5)
  99.         move.l    a2,.Filter(a5)
  100.         move.l    a3,.NewDesc(a5)
  101.         move.l    d7,.OldDesc(a5)
  102.  
  103.         move.l    .OldDesc(a5),a0            ; Copy old hotkey
  104.         lea    -(20+HOTKEYSIZE)(a5),a1
  105.         bsr    StrCpy
  106.  
  107.         move.l    .NewDesc(a5),a0            ; Copy new HotKey
  108.         move.l    .OldDesc(a5),a1
  109.         bsr    StrCpy
  110.  
  111.         tst.l    MyBroker(a4)            ; Execute routine, only if
  112.         beq.s    .GotNewChangeHK            ; Broker is really there
  113.         move.l    a2,d0
  114.         beq.s    .GotNewChangeHK
  115.  
  116.         bsr    DisableBroker
  117.  
  118.         move.l    .OldDesc(a5),a1            ; Check for non name
  119.         lea    NonName(pc),a0
  120.         moveq    #-1,d7
  121.         bsr    StrCmp
  122.         tst.l    d0
  123.         bne.s    .NormalHotKey
  124.         lea    NonHotKey(pc),a1
  125. .NormalHotKey    move.l    .Filter(a5),a0            ; Try to set new filter
  126.         move.l    _CxBase,a6
  127.         DOLIB    SetFilter
  128.         move.l    .Filter(a5),a0            ; Error occured ?
  129.         DOLIB    CxObjError
  130.         tst.l    d0
  131.         beq.s    .GotNewChangeHK            ; Nope -> go on
  132.  
  133.         lea    -(20+HOTKEYSIZE)(a5),a0        ; Remake HotKey
  134.         move.l    .OldDesc(a5),a1
  135.         bsr    StrCpy
  136.  
  137.         move.l    .Filter(a5),a0            ; Reset old hotkey
  138.         move.l    .OldDesc(a5),a1
  139.         DOLIB    SetFilter
  140.  
  141. .GotNewChangeHK    move.l    .Window(a5),a0
  142.         move.l    a0,d0
  143.         beq.s    .NoNewTitle
  144.         move.l    .Title(a5),a1
  145.         move.l    #-1,a2
  146.         RELLIB    SetWindowTitles,_IntuitionBase
  147. .NoNewTitle    tst.l    HotKeyHandle(a4)
  148.         beq.s    .NoGadRemake
  149.         move.l    HotKeyChange(a4),d0        ; Check if HotKey to be changed
  150.         lea    HotKeyGadVars,a0        ; is displayed withing HotKey-Win
  151.         mulu    #12,d0
  152.         move.l    8(a0,d0),d0
  153.         move.l    0(a4,d0),a0
  154.         cmp.l    .Filter(a5),a0            ; Same filter address ???
  155.         bne.s    .NoGadRemake
  156.         move.l    #GD_HotKeyDef,d0        ; Remake HotKey string
  157.         lea    HotKeyGads(a4),a0
  158.         move.l    HotKeyHandle(a4),a1
  159.         move.l    .OldDesc(a5),a2
  160.         RELLIB    SetStringGad,_KCXBase
  161. .NoGadRemake    bsr    EnableBroker
  162. .NoFullRemake    unlk    a5
  163.         movem.l    (sp)+,RegsAll
  164.         rts
  165. NonName        dc.b    "none",0
  166. NonHotKey    dc.b    "lshift lalt lcommand rshift ralt rcommand control numericpad esc",0
  167.  
  168.  
  169.  
  170.  
  171. **********************************************************************
  172. *                 Get a file name via ASL-Requester                  *
  173. * Parameters must be passed on stack in given order                  *
  174. *  1. Pointer to window                                              *
  175. *  2. Pointer to requester header                                    *
  176. *  3. Pointer to complete filename                                   *
  177. *  4. Number of gadget to change                                     *
  178. *  5. Pointer to GadgetArray                                         *
  179. *  6. Mode for filerequester                                         *
  180. *  7. Pointer to Gadgetroutine (Offset)                              *
  181. **********************************************************************
  182. GetFileName    CARGS    #64,.Window.l,.Header.l,.CompleteName.l,.GadgetNum.w,.GadgetList.l,.Mode.L,.GadFunc.L
  183.         movem.l    d1-d7/a0-a6,-(sp)
  184.         link    a5,#-(ra_SIZEOF)
  185.         move.l    .Window(a5),a0
  186.         move.l    wd_WScreen(a0),a0
  187.         lea    sc_ViewPort(a0),a0
  188.         RELLIB    GetVPModeID,_GfxBase
  189.         move.l    d0,a0
  190.         lea    -(ra_SIZEOF)(a5),a1
  191.         move.l    #OSCAN_TEXT,d0
  192.         RELLIB    QueryOverscan,_IntuitionBase
  193.         lea    -(ra_SIZEOF)(a5),a2
  194.         moveq    #0,d0
  195.         move.w    ra_MaxX(a2),d0
  196.         sub.w    ra_MinX(a2),d0
  197.         addq.w    #1,d0
  198.         move.l    #45,d1
  199.         RELLIB    UMult32,_UtilityBase
  200.         move.l    #100,d1
  201.         DOLIB    UDivMod32
  202.         move.l    d0,d2                ; Width of FileReq
  203.         moveq    #0,d0
  204.         move.w    ra_MaxY(a2),d0
  205.         sub.w    ra_MinY(a2),d0
  206.         addq.w    #1,d0
  207.         moveq    #8,d1
  208.         DOLIB    UMult32
  209.         moveq    #10,d1
  210.         DOLIB    UDivMod32
  211.         move.l    d0,d3                ; Height of FileReq
  212.         move.l    d2,FileReqWidth
  213.         move.l    d3,FileReqHeight
  214.         moveq    #0,d0
  215.         moveq    #0,d1
  216.         move.w    ra_MaxX(a2),d0
  217.         addq.w    #1,d0
  218.         move.w    ra_MaxY(a2),d1
  219.         addq.w    #1,d1
  220.         sub.w    d2,d0
  221.         sub.w    d3,d1
  222.         lsr.w    #1,d0
  223.         lsr.w    #1,d1
  224.         move.l    .Window(a5),a2
  225.         move.l    wd_WScreen(a2),a2
  226.         sub.w    sc_LeftEdge(a2),d0
  227.         sub.w    sc_TopEdge(a2),d1
  228.         move.l    d0,FileReqLeft
  229.         move.l    d1,FileReqTop
  230.  
  231.         move.l    .Mode(a5),FileReqDirs
  232.         move.l    MyLocale(pc),FileReqLoc
  233.         RELLIB    AllocFileRequest,_AslBase    ; Get structure for filerequester
  234.         move.l    d0,MyAslRequest(a4)
  235.         tst.l    d0
  236.         beq    NoFileName
  237.  
  238.         clr.b    DirPath(a4)
  239.         clr.b    DirFile(a4)
  240.         move.l    .CompleteName(a5),a0
  241.         bsr    StrLen
  242.         lea    0(a0,d0),a0
  243. .GetFile    cmp.b    #":",(a0)
  244.         beq.s    .GotFile
  245.         cmp.b    #"/",(a0)
  246.         beq.s    .GotFile
  247.         subq.l    #1,a0
  248.         dbf    d0,.GetFile
  249. .GotFile    move.l    d0,d7
  250.         addq.l    #1,a0
  251.         lea    DirFile(a4),a1
  252.         move.l    a0,a2
  253.         bsr    StrCpy
  254.         clr.b    DirPath(a4)
  255.         tst.w    d7
  256.         blt.s    .NoDir
  257.         moveq    #-1,d5
  258.         cmp.b    #'/',-1(a2)
  259.         beq.s    .NoBack
  260.         moveq    #0,d5
  261. .NoBack        move.b    0(a2,d5),d6
  262.         clr.b    0(a2,d5)
  263.         move.l    .CompleteName(a5),a0
  264.         lea    DirPath(a4),a1
  265.         bsr    StrCpy
  266.         move.b    d6,0(a2,d5)
  267. .NoDir        move.l    .Window(a5),FileReqWin        ; Set up filerequester
  268.         lea    DirPath(a4),a0
  269.         move.l    a0,FileReqDir
  270.         lea    DirFile(a4),a0
  271.         move.l    a0,FileReqFile
  272.         move.l    .Header(a5),FileReqHeader
  273.         move.l    MyAslRequest(a4),a0
  274.         lea    AslFileTags(pc),a1
  275.         RELLIB    AslRequest,_AslBase        ; Do the request
  276.         move.l    d0,d7
  277.         tst.l    d0
  278.         beq.s    .Canceled
  279.         move.l    MyAslRequest(a4),a2
  280.         move.l    rf_Dir(a2),a0
  281.         move.l    .CompleteName(a5),a1        ; Copy Dir name
  282.         moveq    #-1,d7
  283.         bsr    StrCpy
  284.         move.l    .CompleteName(a5),a0
  285.         bsr    StrLen
  286.         tst.b    (a0)
  287.         beq.s    .GotPath
  288.         lea    0(a0,d0),a0
  289.         cmp.b    #"/",-1(a0)
  290.         beq.s    .GotPath
  291.         cmp.b    #":",-1(a0)
  292.         beq.s    .GotPath
  293.         move.b    #"/",(a0)+
  294. .GotPath    move.l    a0,a1
  295.         move.l    rf_File(a2),a0
  296.         bsr    StrCpy
  297.         tst.l    .GadgetList(a5)
  298.         beq.s    .Canceled
  299.         move.w    .GadgetNum(a5),d0
  300.         ext.l    d0
  301.         move.l    .GadgetList(a5),a0
  302.         move.l    .Window(a5),a1
  303.         move.l    .CompleteName(a5),a2
  304.         move.l    .GadFunc(a5),d7
  305.         move.l    _KCXBase(a4),a6
  306.         jsr    0(a6,d7)
  307.         moveq    #1,d7
  308. .Canceled    move.l    MyAslRequest(a4),a0        ; Copy new position of filereq
  309.         RELLIB    FreeFileRequest,_AslBase    ; Free request
  310. NoFileName    unlk    a5
  311.         move.l    d7,d0
  312.         movem.l    (sp)+,d1-d7/a0-a6
  313.         rts
  314. **********************************************************************
  315. *                         FileRequester tags                         *
  316. **********************************************************************
  317. AslFileTags    dc.l    ASLFR_TitleText
  318. FileReqHeader    dc.l    0
  319.         dc.l    ASLFR_Window
  320. FileReqWin    dc.l    0
  321.         dc.l    ASLFR_InitialLeftEdge
  322. FileReqLeft    dc.l    0
  323.         dc.l    ASLFR_InitialTopEdge
  324. FileReqTop    dc.l    0
  325.         dc.l    ASLFR_InitialWidth
  326. FileReqWidth    dc.l    320
  327.         dc.l    ASLFR_InitialHeight
  328. FileReqHeight    dc.l    140
  329.         dc.l    ASLFR_InitialFile
  330. FileReqFile    dc.l    0
  331.         dc.l    ASLFR_InitialDrawer
  332. FileReqDir    dc.l    0
  333.         dc.l    ASLFR_Flags1
  334. FileReqDirs    dc.l    0
  335.         dc.l    ASLFR_Flags2
  336.         dc.l    FRF_REJECTICONS
  337.         dc.l    ASLFR_Locale
  338. FileReqLoc    dc.l    0
  339.         dc.l    TAG_DONE
  340.  
  341.  
  342.  
  343. **********************************************************************
  344. *                            Main program                            *
  345. **********************************************************************
  346. START        movem.l    d1-d7/a0-a6,-(sp)
  347.  
  348.         sub.l    a1,a1
  349.         CALLSYS    FindTask
  350.         move.l    d0,a5
  351.         tst.l    pr_CLI(a5)
  352.         bne.s    .FromCLI
  353.         lea    pr_MsgPort(a5),a0
  354.         DOLIB    WaitPort
  355.         lea    pr_MsgPort(a5),a0
  356.         DOLIB    GetMsg
  357.         move.l    d0,MyWBMsg
  358.  
  359. .FromCLI    cmp.w    #NEED_LIBVER,LIB_VERSION(a6)    ; From OS >= 2.04 ???
  360.         bge.s    .IsOver20
  361.  
  362.         bsr    OnlyKick20
  363.         pea    0
  364.         bra    .NoDiskObj
  365.  
  366. * First some needed initializations
  367.  
  368. .IsOver20    CALLSYS    Forbid
  369.  
  370.         lea    PrefsPortName(pc),a1
  371.         DOLIB    FindPort
  372.         tst.l    d0
  373.         beq.s    .StartPrefs
  374.         pea    0
  375.         bra    .NoDiskObj
  376.  
  377. .StartPrefs    move.l    #MP_SIZE+4,d0            ; Get memory for our MsgPort
  378.         move.l    #MEMF_CLEAR,d1
  379.         DOLIB    AllocVec
  380.         move.l    d0,d7
  381.         tst.l    d0
  382.         bne.s    .GotComBuff
  383.         DOLIB    Permit
  384.         bra    .OpenError
  385. .GotComBuff    moveq    #-1,d0                ; Try to allocate signal
  386.         DOLIB    AllocSignal
  387.         move.l    d0,d6
  388.         tst.l    d0
  389.         bge.s    .GotComSig
  390.         move.l    d7,a1
  391.         DOLIB    FreeVec
  392.         DOLIB    Permit
  393.         bra    .OpenError
  394. .GotComSig    move.l    d7,a1
  395.         move.b    #PA_SIGNAL,MP_FLAGS(a1)        ; Set Up Message Port structure
  396.         move.b    d6,MP_SIGBIT(a1)
  397.         move.l    ThisTask(a6),MP_SIGTASK(a1)
  398.         lea    MP_MSGLIST(a1),a0
  399.         NEWLIST    a0
  400.         lea    PrefsPortName(pc),a0
  401.         move.l    a0,LN_NAME(a1)
  402.         move.b    #NT_MSGPORT,LN_TYPE(a1)
  403.         clr.b    LN_PRI(a1)
  404.         moveq    #1,d1
  405.         lsl.l    d6,d1
  406.         move.l    d1,d6
  407.         DOLIB    AddPort                ; Add Port to list
  408.  
  409.         lea    BackPortName(pc),a1        ; Buddy already there ???
  410.         DOLIB    FindPort
  411.         tst.l    d0
  412.         bne    .TakeBack
  413.         move.l    #_SIZEOF_PAGE,d0        ; Otherwise create "ours"
  414.         move.l    #MEMF_CLEAR,d1
  415.         DOLIB    AllocVec
  416.         move.l    d0,ZeroBase
  417.         tst.l    d0
  418.         bne.s    .GotZeroBase
  419.         move.l    d7,a1
  420.         DOLIB    RemPort
  421.         move.l    d6,d0
  422.         DOLIB    FreeSignal
  423.         move.l    d7,a1
  424.         DOLIB    FreeVec
  425.         pea    10
  426.         bra    .NoNothing
  427. .GotZeroBase    move.l    d0,a4
  428.         move.l    d7,PrefsPort(a4)
  429.         move.l    d6,PrefsPortSig(a4)
  430.         ST    ReadPrefs
  431.         bsr    InitZeroPage            ; First Initialize the Z
  432.         bsr    InitWindows
  433.         bsr    MakeHotKeys            ; Init default HotKeys
  434.         lea    WindowBase(a4),a0        ; Init Window list header
  435.         NEWLIST    a0
  436.         lea    TaskWinBase(a4),a0        ; Init WindowTast list header
  437.         NEWLIST    a0
  438.         lea    TagScrsTasks(a4),a0        ; Init TagScreens entries
  439.         NEWLIST    a0
  440.         CALLSYS    Permit
  441.         bsr    OpenLibs            ; Open libs
  442.         tst.l    d0
  443.         beq    .OpenError
  444.         bsr    SetUpLocale            ; Set up locale
  445.         LOCLEA    DefLabel,a0
  446.         lea    FormatDriveName(a4),a1
  447.         bsr    StrCpy
  448.         bra.s    .GoStart
  449.  
  450. .TakeBack    clr.l    BackProcThere1+4        ; Clear flag of REMOVE gadget
  451.         clr.l    BackProcThere2+4        ; ... FORMATTER
  452.         clr.l    BackProcThere3+4        ; ... BILL WINDOW
  453.         clr.l    BackProcThere4+4        ; Graphics Dump
  454.         clr.l    BackProcThere5+4        ; Graphics Dump
  455.         clr.l    BackProcThere6+4        ; Graphics Dump
  456.         move.l    d0,a0
  457.         move.l    MP_SIZE(a0),a4
  458.         move.l    a4,ZeroBase
  459.         move.l    d7,PrefsPort(a4)
  460.         move.l    d6,PrefsPortSig(a4)
  461.         CALLSYS    Permit
  462.  
  463. * Patch references; Set up locale and open remaining library
  464.  
  465. .GoStart    move.l    a4,d0
  466.         add.l    d0,Zero1+4            ; Patch some references
  467.         add.l    d0,Zero2+4
  468.         add.l    d0,Zero3+4
  469.  
  470.         bsr    SetUpLocale            ; Set up locale
  471.  
  472.         lea    ComName(pc),a1            ; Open Cx-Library, which is not shared
  473.         move.l    a1,PrefsErrArg(a4)
  474.         moveq    #NEED_LIBVER,d0
  475.         CALLSYS    OpenLibrary
  476.         move.l    d0,_CxBase
  477.         tst.l    d0
  478.         beq    .OpenError
  479.  
  480.         sub.l    a1,a1                ; Get pointer to our process
  481.         CALLSYS    FindTask
  482.         move.l    d0,a5
  483.         move.l    d0,PrefsTask(a4)
  484.         move.l    PrefsPort(a4),a0
  485.         move.l    a4,MP_SIZE(a0)            ; Store pointer to ZeroBase
  486.         tst.l    pr_CLI(a5)
  487.         bne.s    .GoOn
  488.  
  489.         move.l    MyWBMsg(pc),a5            ; Parse ToolTypes
  490.         move.l    sm_ArgList(a5),a5        ; Get pointer to ArgList
  491.         move.l  a5,d0
  492.         beq.s    .NoBackground
  493.         move.l    wa_Lock(a5),d1            ; Get lock to Prg-Dir
  494.         RELLIB    CurrentDir,_DOSBase
  495.         move.l    wa_Name(a5),a0            ; Get .info-File
  496.         RELLIB    GetDiskObjectNew,_IconBase
  497.         move.l    d0,MyDiskObj
  498.         beq    .EndPrg
  499.         move.l    d0,a0                ; Store pointer to ToolTypes
  500.         move.l    do_ToolTypes(a0),MyToolTypes
  501.         bsr    GetToolTypes
  502.         bra.s    .NoBackground
  503.  
  504. .GoOn
  505.         IFGT    DEBUG
  506.         bra.s    .NoBackground
  507.         ENDC
  508.         bsr    GetCommandLine            ; Get command line
  509.         tst.l    d7
  510.         beq    .OpenError
  511.         cmp.l    #1,d7
  512.         beq.s    .NoBackground
  513.         moveq    #0,d0
  514.         bra    .CloseDown
  515.  
  516. * Now initialize the main thingies
  517.  
  518. .NoBackground    tst.b    ReadPrefs            ; Are we to read the prefs
  519.         beq.s    .NoReadPrefs
  520.         bsr    LoadPrefs            ; Read in preferences
  521.  
  522. .NoReadPrefs    lea    StrEditHook(pc),a0        ; Initialize the StringEdit-Hook
  523.         move.l    #MyStrEditFunc,h_Entry(a0)
  524.         clr.l    h_SubEntry(a0)
  525.         move.l    a4,h_Data(a0)
  526.  
  527.         move.l    _GfxBase(a4),a0            ; Check for Denise
  528.         btst    #GFXB_HR_DENISE,gb_ChipRevBits0(a0)
  529.         beq.s    .NoDenise
  530.         ST    BlackBorderOk(a4)
  531.  
  532. .NoDenise    move.l    $4.w,a0                ; Check for OS-Version
  533.         cmp.w    #39,LIB_VERSION(a0)
  534.         blt.s    .NoOS30
  535.         ST    OS3TagsOk(a4)
  536.  
  537. .NoOS30        move.l    #WINDOWPORT_ERR,ErrorPrefs(a4)
  538.         CALLSYS    CreateMsgPort            ; Create Msg Port for main windows
  539.         move.l    d0,WindowPort(a4)
  540.         tst.l    d0
  541.         beq.s    .OpenError
  542.         move.l    d0,a0
  543.         clr.l    LN_NAME(a0)
  544.         clr.b    LN_PRI(a0)
  545.         moveq    #0,d0
  546.         moveq    #1,d1
  547.         move.b    MP_SIGBIT(a0),d0
  548.         lsl.l    d0,d1
  549.         move.l    d1,WindowPortSig(a4)
  550.         move.l    #-1,ErrorPrefs(a4)
  551.  
  552.         bsr    OpenMainWin            ; Open the main window
  553.  
  554.         bsr    CheckInput            ; Do the wild thing
  555.         move.l    #NO_ERR,ErrorPrefs(a4)
  556.  
  557. .OpenError    tst.l    ErrorPrefs(a4)            ; Error occured ?
  558.         blt.s    .EndPrg
  559.         bsr    DisplayError            ; Display error
  560. .EndPrg        moveq    #0,d0                ; No error
  561. .CloseDown    move.l    d0,-(sp)
  562.         CALLSYS    Forbid
  563.         tst.l    _KCXBase(a4)
  564.         beq.s    .NoWinPort
  565.         bsr    CloseWins            ; Close all windows first
  566.  
  567.         tst.l    WindowPort(a4)            ; Had a port for all the windows ???
  568.         beq.s    .NoWinPort
  569.         move.l    WindowPort(a4),a0        ; Just kill it
  570.         CALLSYS    DeleteMsgPort
  571.         clr.l    WindowPort(a4)
  572.  
  573. .NoWinPort    move.l    PrefsPort(a4),d0        ; Remove our Port
  574.         beq.s    .NoPrefsPort
  575.         move.l    d0,a0
  576.         CALLSYS    GetMsg
  577.         move.l    PrefsPort(a4),a1
  578.         DOLIB    RemPort
  579.         move.l    PrefsPort(a4),a0
  580.         moveq    #0,d0
  581.         move.b    MP_SIGBIT(a0),d0
  582.         DOLIB    FreeSignal
  583.         move.l    PrefsPort(a4),a1
  584.         DOLIB    FreeVec
  585.         clr.l    PrefsPort(a4)
  586.         clr.l    PrefsPortSig(a4)
  587.  
  588. .NoPrefsPort    bsr    ShutDownLocale
  589.         lea    BackPortName(pc),a1        ; Buddy still there ???
  590.         CALLSYS    FindPort
  591.         tst.l    d0
  592.         bne.s    .StillBack
  593.         tst.l    _KCXBase(a4)
  594.         beq.s    .NoWins
  595.         lea    WindowBase(a4),a0
  596.         RELLIB    FreeWindows,_KCXBase        ; Free list of windows
  597.         lea    TaskWinBase(a4),a0
  598.         DOLIB    FreeWindows
  599.         lea    TagScrsTasks(a4),a0
  600.         DOLIB    FreeWindows
  601. .NoWins        bsr    CloseLibs            ; Close Libs
  602.         move.l    ZeroBase(pc),a1            ; FRee ZeroPage
  603.         CALLSYS    FreeVec
  604.  
  605. .StillBack    tst.l    _CxBase
  606.         beq.s    .NoNothing
  607.         move.l    _CxBase,a1
  608.         CALLSYS    CloseLibrary
  609.  
  610. .NoNothing    tst.l    MyDiskObj            ; Got a Disk-Object ?
  611.         beq.s    .NoDiskObj
  612.         move.l    MyDiskObj,a0            ; release it
  613.         RELLIB    FreeDiskObject,_IconBase
  614.  
  615. .NoDiskObj    tst.l    MyWBMsg
  616.         beq.s    .NoWBMsg
  617.         move.l    MyWBMsg(pc),a1
  618.         CALLSYS    ReplyMsg
  619. .NoWBMsg    move.l    (sp)+,d0
  620.         movem.l    (sp)+,d1-d7/a0-a6
  621.         rts
  622. MyWBMsg        dc.l    0
  623. MyToolTypes    dc.l    0
  624. MyDiskObj    dc.l    0
  625. MyRDArgs    dc.l    0
  626. Args        dc.l    0
  627. ReadPrefs    dc.w    0
  628.  
  629.  
  630.  
  631.  
  632. **********************************************************************
  633. *                      Attempt to load the libs                      *
  634. **********************************************************************
  635. OpenLibs    move.l    #NOTFOUND_ERR,ErrorPrefs(a4)
  636.         lea    KCXName(pc),a1
  637.         move.l    a1,PrefsErrArg(a4)
  638.         move.l    #VERNUM,d0
  639.         CALLSYS    OpenLibrary
  640.         move.l    d0,_KCXBase(a4)
  641.         tst.l    d0
  642.         beq    .LibError
  643.  
  644.         lea    IntName(pc),a1
  645.         move.l    a1,PrefsErrArg(a4)
  646.         move.l    #NEED_LIBVER,d0
  647.         DOLIB    OpenLibrary
  648.         move.l    d0,_IntuitionBase(a4)
  649.         tst.l    d0
  650.         beq    .LibError
  651.  
  652.         lea    DosName(pc),a1
  653.         move.l    a1,PrefsErrArg(a4)
  654.         move.l    #NEED_LIBVER,d0
  655.         DOLIB    OpenLibrary
  656.         move.l    d0,_DOSBase(a4)
  657.         tst.l    d0
  658.         beq    .LibError
  659.  
  660.         lea    IconName(pc),a1
  661.         move.l    a1,PrefsErrArg(a4)
  662.         move.l    #NEED_LIBVER,d0
  663.         DOLIB    OpenLibrary
  664.         move.l    d0,_IconBase(a4)
  665.         tst.l    d0
  666.         beq    .LibError
  667.  
  668.         lea    LayerName(pc),a1
  669.         move.l    a1,PrefsErrArg(a4)
  670.         move.l    #NEED_LIBVER,d0
  671.         DOLIB    OpenLibrary
  672.         move.l    d0,_LayersBase(a4)
  673.         tst.l    d0
  674.         beq    .LibError
  675.  
  676.         lea    GadName(pc),a1
  677.         move.l    a1,PrefsErrArg(a4)
  678.         moveq    #NEED_LIBVER,d0
  679.         DOLIB    OpenLibrary
  680.         move.l    d0,_GadToolsBase(a4)
  681.         tst.l    d0
  682.         beq    .LibError
  683.  
  684.         lea    GfxName(pc),a1
  685.         move.l    a1,PrefsErrArg(a4)
  686.         move.l    #NEED_LIBVER,d0
  687.         DOLIB    OpenLibrary
  688.         move.l    d0,_GfxBase(a4)
  689.         tst.l    d0
  690.         beq    .LibError
  691.  
  692.         lea    RexxSysName(pc),a1
  693.         move.l    a1,PrefsErrArg(a4)
  694.         moveq    #0,d0
  695.         DOLIB    OpenLibrary
  696.         move.l    d0,_RexxSysBase(a4)
  697.         tst.l    d0
  698.         beq    .LibError
  699.  
  700.         lea    AslName(pc),a1
  701.         move.l    a1,PrefsErrArg(a4)
  702.         move.l    #NEED_LIBVER,d0
  703.         DOLIB    OpenLibrary
  704.         move.l    d0,_AslBase(a4)
  705.         tst.l    d0
  706.         beq    .LibError
  707.         move.l    d0,a0
  708.         cmp.w    #38,LIB_VERSION(a0)
  709.         bge.s    .NoReqTools
  710.         lea    ReqToolsName(pc),a1
  711.         move.l    a1,PrefsErrArg(a4)
  712.         move.l    #38,d0
  713.         DOLIB    OpenLibrary
  714.         tst.l    d0
  715.         beq.s    .LibError
  716.         move.l    d0,_ReqToolsBase(a4)
  717.  
  718. .NoReqTools    lea    WBName(pc),a1
  719.         move.l    a1,PrefsErrArg(a4)
  720.         move.l    #NEED_LIBVER,d0
  721.         DOLIB    OpenLibrary
  722.         move.l    d0,_WorkBenchBase(a4)
  723.         tst.l    d0
  724.         beq.s    .LibError
  725.  
  726.         lea    UtilityName(pc),a1
  727.         move.l    a1,PrefsErrArg(a4)
  728.         move.l    #NEED_LIBVER,d0
  729.         DOLIB    OpenLibrary
  730.         move.l    d0,_UtilityBase(a4)
  731.         tst.l    d0
  732.         beq.s    .LibError
  733.  
  734.         lea    IFFParseName(pc),a1
  735.         move.l    a1,PrefsErrArg(a4)
  736.         move.l    #NEED_LIBVER,d0
  737.         DOLIB    OpenLibrary
  738.         move.l    d0,_IFFParseBase(a4)
  739.         tst.l    d0
  740.         beq.s    .LibError
  741.  
  742.         lea    KeyMapName(pc),a1
  743.         move.l    a1,PrefsErrArg(a4)
  744.         move.l    #NEED_LIBVER,d0
  745.         DOLIB    OpenLibrary
  746.         move.l    d0,_KeyMapBase(a4)
  747.         tst.l    d0
  748.         beq.s    .LibError
  749.  
  750.         lea    LocaleName(pc),a1
  751.         move.l    #NEED_LIBVER,d0
  752.         DOLIB    OpenLibrary
  753.         move.l    d0,_LocaleBase(a4)
  754.         moveq    #1,d0
  755. .LibError    rts
  756. **********************************************************************
  757. *                           Library names                            *
  758. **********************************************************************
  759. IntName        dc.b    "intuition.library",0
  760. ComName        dc.b    "commodities.library",0
  761. DosName        dc.b    "dos.library",0
  762. IconName    dc.b    "icon.library",0
  763. LayerName    dc.b    "layers.library",0
  764. GadName        dc.b    "gadtools.library",0
  765. GfxName        dc.b    "graphics.library",0
  766. RexxSysName    dc.b    "rexxsyslib.library",0
  767. WBName        dc.b    "workbench.library",0
  768. AslName        dc.b    "asl.library",0
  769. UtilityName    dc.b    "utility.library",0
  770. IFFParseName    dc.b    "iffparse.library",0
  771. LocaleName    dc.b    "locale.library",0
  772. KeyMapName    dc.b    "keymap.library",0
  773. ReqToolsName    dc.b    "reqtools.library",0
  774. KCXName        KCXNAME
  775.         EVEN
  776.  
  777.  
  778.  
  779.  
  780.  
  781. **********************************************************************
  782. *                          Close Libs again                          *
  783. **********************************************************************
  784. CloseLibs    move.l    $4.w,a6
  785.         tst.l    _KCXBase(a4)
  786.         beq.s    .NoKCX
  787.         move.l    _KCXBase(a4),a1
  788.         DOLIB    CloseLibrary
  789.  
  790. .NoKCX        tst.l    _LocaleBase(a4)
  791.         beq.s    .NoLocale
  792.         move.l    _LocaleBase(a4),a1
  793.         DOLIB    CloseLibrary
  794.  
  795. .NoLocale    tst.l    _KeyMapBase(a4)
  796.         beq.s    .NoKeyMap
  797.         move.l    _KeyMapBase(a4),a1
  798.         DOLIB    CloseLibrary
  799.  
  800. .NoKeyMap    tst.l    _IFFParseBase(a4)
  801.         beq.s    .NoIFFParseBase
  802.         move.l    _IFFParseBase(a4),a1
  803.         DOLIB    CloseLibrary
  804.  
  805. .NoIFFParseBase    tst.l    _UtilityBase(a4)
  806.         beq.s    .NoUtilityBase
  807.         move.l    _UtilityBase(a4),a1
  808.         DOLIB    CloseLibrary
  809.  
  810. .NoUtilityBase    tst.l    _WorkBenchBase(a4)
  811.         beq.s    .NoWBBase
  812.         move.l    _WorkBenchBase(a4),a1
  813.         DOLIB    CloseLibrary
  814.  
  815. .NoWBBase    tst.l    _ReqToolsBase(a4)
  816.         beq.s    .NoReqToolsBase
  817.         move.l    _ReqToolsBase(a4),a1
  818.         DOLIB    CloseLibrary
  819.  
  820. .NoReqToolsBase    tst.l    _AslBase(a4)
  821.         beq.s    .NoAslBase
  822.         move.l    _AslBase(a4),a1
  823.         DOLIB    CloseLibrary
  824.  
  825. .NoAslBase    tst.l    _RexxSysBase(a4)
  826.         beq.s    .NoRexxSysBase
  827.         move.l    _RexxSysBase(a4),a1
  828.         DOLIB    CloseLibrary
  829.  
  830. .NoRexxSysBase    tst.l    _GfxBase(a4)
  831.         beq.s    .NoGfxBase
  832.         move.l    _GfxBase(a4),a1
  833.         DOLIB    CloseLibrary
  834.  
  835. .NoGfxBase    tst.l    _GadToolsBase(a4)
  836.         beq.s    .NoGadToolsBase
  837.         move.l    _GadToolsBase(a4),a1
  838.         DOLIB    CloseLibrary
  839.  
  840. .NoGadToolsBase    tst.l    _LayersBase(a4)
  841.         beq.s    .NoLayersBase
  842.         move.l    _LayersBase(a4),a1
  843.         DOLIB    CloseLibrary
  844.  
  845. .NoLayersBase    tst.l    _IconBase(a4)
  846.         beq.s    .NoIconBase
  847.         move.l    _IconBase(a4),a1
  848.         DOLIB    CloseLibrary
  849.  
  850. .NoIconBase    tst.l    _DOSBase(a4)
  851.         beq.s    .NoDosBase
  852.         move.l    _DOSBase(a4),a1
  853.         DOLIB    CloseLibrary
  854.  
  855. .NoDosBase    tst.l    _IntuitionBase(a4)
  856.         beq.s    .NoIntBase
  857.         move.l    _IntuitionBase(a4),a1
  858.         DOLIB    CloseLibrary
  859. .NoIntBase    rts
  860.  
  861.  
  862.  
  863.  
  864. **********************************************************************
  865. *                   Set up things for localization                   *
  866. **********************************************************************
  867. SetUpLocale    tst.l    _LocaleBase(a4)
  868.         beq.s    .NoLocale
  869.         tst.l    MyLocale
  870.         bne.s    .NoLocale
  871.         sub.l    a0,a0
  872.         RELLIB    OpenLocale,_LocaleBase
  873.         move.l    d0,MyLocale
  874.         tst.l    MyCatalog
  875.         bne.s    .NoLocale
  876.         sub.l    a0,a0
  877.         lea    CatalogName(pc),a1
  878.         sub.l    a2,a2
  879.         DOLIB    OpenCatalogA
  880.         move.l    d0,MyCatalog
  881. .NoLocale    rts
  882. MyCatalog    dc.l    0
  883. MyLocale    dc.l    0
  884. CatalogName    dc.b    "kcxprefs.catalog",0
  885.         EVEN
  886. **********************************************************************
  887. *                       Shut down localization                       *
  888. **********************************************************************
  889. ShutDownLocale    tst.l    MyCatalog
  890.         beq.s    .NoCatalog
  891.         move.l    MyCatalog,a0
  892.         RELLIB    CloseCatalog,_LocaleBase
  893. .NoCatalog    tst.l    MyLocale
  894.         beq.s    .NoLocale
  895.         move.l    MyLocale,a0
  896.         RELLIB    CloseLocale,_LocaleBase
  897. .NoLocale    rts
  898.  
  899.  
  900.  
  901.  
  902. **********************************************************************
  903. *                        Init Windowpositions                        *
  904. **********************************************************************
  905. InitWindows    lea    WinPosTab(pc),a2
  906.         lea    MainWinLeft(a4),a3
  907.         moveq    #43,d0
  908. .loop1        move.w    (a2)+,(a3)+
  909.         dbf    d0,.loop1
  910.         lea    WinSizeTab(pc),a2
  911.         lea    MainWinWidth(a4),a3
  912.         moveq    #43,d0
  913. .loop2        move.w    (a2)+,(a3)+
  914.         dbf    d0,.loop2
  915.         rts
  916. WinPosTab    dc.w    58,37,44,46,57,44,133,67
  917.         dc.w    110,82,118,53,167,61,70,51
  918.         dc.w    78,68,168,40,138,13,120,65
  919.         dc.w    397,11,120,17,65,50,166,68
  920.         dc.w    0,0,70,23,55,51,139,73
  921.         dc.w    72,55,103,75
  922. WinSizeTab    dc.w    551,126,574,45,583,126,484,79
  923.         dc.w    421,35,424,94,348,78,527,147
  924.         dc.w    562,95,356,111,364,173,507,100
  925.         dc.w    319,106,485,180,511,100,309,23
  926.         dc.w    0,0,608,162,592,96,405,82
  927.         dc.w    523,180,450,101
  928.  
  929.  
  930.  
  931. **********************************************************************
  932. *                      Init ZeroPage-Parameters                      *
  933. **********************************************************************
  934. InitZeroPage    moveq    #-1,d0
  935.         move.l    d0,FCycleSecs(a4)        ; Init some longs
  936.         move.l    d0,BCycleSecs(a4)
  937.         move.l    d0,MCycleSecs(a4)
  938.         move.w    d0,OldX(a4)
  939.         move.l    d0,ThisHour(a4)
  940.         move.l    d0,AlarmSigBit(a4)
  941.         move.l    d0,FormatSigBit(a4)
  942.         move.l    d0,DragSigBit(a4)
  943.         move.l    d0,LastSelScrSec(a4)
  944.         move.l    d0,LastSelScrMin(a4)
  945.         move.w    d0,LastSelScr(a4)
  946.  
  947.         moveq    #1,d0
  948.         move.b    d0,DoPopUp(a4)            ; Set some bool flags
  949.         move.b    d0,TimeReset(a4)
  950.         move.b    d0,DispAppIcon(a4)
  951.         move.b    d0,DispAppMenu(a4)
  952.         move.b    d0,CheckQuit(a4)
  953.  
  954.         move.b    d0,DoActivate(a4)        ; Init default settings
  955.         move.b    d0,ShowClock(a4)
  956.         move.b    d0,DoShowTime(a4)
  957.         move.b    d0,ShowSecs(a4)
  958.         move.b    d0,DoShowAlarm(a4)
  959.         move.b    d0,CycleWin(a4)
  960.         move.b    d0,KeyClick(a4)
  961.         move.b    d0,BillPopUp(a4)
  962.         move.b    d0,WBFront(a4)
  963.         move.b    d0,ESCClose(a4)
  964.  
  965.         move.b    d0,MakeIcons(a4)
  966.         move.b    d0,QuickFormat(a4)
  967.         move.b    d0,FFSDrive(a4)
  968.         move.b    d0,WatchDisks(a4)
  969.         move.b    d0,MMBShift(a4)
  970.         move.b    d0,LogCalls(a4)
  971.         move.b    d0,Saturday(a4)
  972.         move.b    d0,Sunday(a4)
  973.         move.b    d0,MouseEver(a4)
  974.         move.b    d0,DriveNoClick(a4)
  975.         move.b    d0,GfxCenter(a4)
  976.         move.b    d0,GfxFormFeed(a4)
  977.         move.b    d0,GfxKeepAspect(a4)
  978.         move.b    d0,Watch0(a4)
  979.         move.b    d0,WindowReAct(a4)
  980.  
  981.         moveq    #2,d1
  982.         move.w    #300,ScreenTime+2(a4)
  983.         move.b    #10,MouseTime+3(a4)
  984.         move.b    #64,ClickVol+3(a4)
  985.         move.b    #5,DimmValue+3(a4)
  986.         move.b    #20,ExpFrames+3(a4)
  987.         move.b    #20,ImpFrames+3(a4)
  988.         move.b    #15,SizeFrames+3(a4)
  989.         move.b    #15,MoveFrames+3(a4)
  990.         move.b    #4,Accelerate+3(a4)
  991.         move.b    d1,ThresHold+3(a4)
  992.         move.w    #IECODE_LBUTTON,FrontCode(a4)
  993.         move.w    #IECODE_RBUTTON,BackCode(a4)
  994.         move.w    #IEQUALIFIER_LEFTBUTTON,BackQual(a4)
  995.         move.w    #IEQUALIFIER_LALT,ESCQual(a4)
  996.         move.w    d1,FrontClicks(a4)
  997.         move.w    d1,BackClicks(a4)
  998.         move.w    d1,MiddleClicks(a4)
  999.         move.l    #8*6,CheapStop(a4)
  1000.         move.l    #18*6,CheapStart(a4)
  1001.         move.l    #MAXBARLEN,MaxBarLen(a4)
  1002.  
  1003.         move.l    $4.w,a6
  1004.         cmp.w    #39,LIB_VERSION(a6)
  1005.         blt.s    .No30
  1006.         move.l    d0,TextFrontPen(a4)
  1007.         move.l    d1,TextBackPen(a4)
  1008.         clr.l    GaugeFrontPen(a4)
  1009.         move.b    #3,GaugeBackPen+3(a4)
  1010.         bra.s    .GotCols
  1011. .No30        clr.l    TextFrontPen(a4)
  1012.         move.l    d0,TextBackPen(a4)
  1013.         move.b    #3,GaugeFrontPen+3(a4)
  1014.         clr.l    GaugeBackPen(a4)
  1015.  
  1016. .GotCols    move.w    #IEQUALIFIER_LSHIFT,FullDragQual(a4)
  1017.         move.w    #360,CostUnit1+2(a4)
  1018.         move.w    #720,CostUnit1+6(a4)
  1019.         move.b    #60,CostUnit2+3(a4)
  1020.         move.b    #120,CostUnit2+7(a4)
  1021.         move.b    #21,CostUnit3+3(a4)
  1022.         move.b    #42,CostUnit3+7(a4)
  1023.         move.b    #23,CostUnit+3(a4)
  1024.         move.b    #4,GfxScale+3(a4)
  1025.         move.b    #2,GfxDensity+3(a4)
  1026.         move.b    #4,GfxThreshold+3(a4)
  1027.         move.l    #NO_ERR,ErrorBack(a4)
  1028.         move.b    #55,HandlerPri+3(a4)
  1029.         move.w    #IEQUALIFIER_LALT,HoldXQual(a4)
  1030.         move.w    #IEQUALIFIER_CONTROL,HoldYQual(a4)
  1031.  
  1032.         move.w    #640-236,BillZoomSize(a4)
  1033.         move.w    #11,BillZoomSize+2(a4)
  1034.  
  1035.         lea    DefPubScrName(pc),a0        ; Init default public screen list
  1036.         lea    PubScreenName(a4),a1
  1037.         bsr.s    GoStrCpy
  1038.         lea    DefSystemComm(pc),a0        ; Init default system command
  1039.         lea    SystemComm(a4),a1
  1040.         bsr.s    GoStrCpy
  1041.         lea    DefLogFileName(pc),a0        ; Init default LogFile name
  1042.         lea    LogFileName(a4),a1
  1043.         bsr.s    GoStrCpy
  1044.         lea    DefPrefsFName(pc),a0        ; Init default Prefs filename
  1045.         lea    PrefsFileName(a4),a1
  1046. GoStrCpy    bra    StrCpy
  1047. DefSystemComm    dc.b    "NewSHELL CON:0/11//200/KCX-Shell/CLOSE/ALT///50/50",0
  1048. DefPubScrName    dc.b    "TERM",0
  1049. DefLogFileName    dc.b    "S:KCXLOGFILE",0
  1050. DefPrefsFName    dc.b    "KCX.PREFS",0
  1051.         EVEN
  1052.  
  1053.  
  1054.  
  1055. **********************************************************************
  1056. *               Copy default hotkeys to "user" buffers               *
  1057. **********************************************************************
  1058. MakeHotKeys    lea    DefaultHotKeys,a2
  1059.         lea    HotKeyGadStat,a3
  1060.         move.w    #HOTKEYNUM-1,d7
  1061. .Loop        move.l    (a2)+,a0
  1062.         move.l    (a3)+,a1
  1063.         add.l    a4,a1
  1064.         bsr    StrCpy
  1065.         dbf    d7,.Loop
  1066.         rts
  1067.  
  1068.  
  1069. **********************************************************************
  1070. *                      Get the given tooltypes                       *
  1071. **********************************************************************
  1072. GetToolTypes    tst.l    MyToolTypes
  1073.         bne.s    .GoOn
  1074.         rts
  1075. .GoOn        move.l    MyToolTypes,a0        ; Change PrefsFileName ?
  1076.         lea    PrefsStr(pc),a1
  1077.         RELLIB    FindToolType,_IconBase
  1078.         tst.l    d0
  1079.         beq.s    .NoPrefs
  1080.         move.l    d0,a0
  1081.         tst.b    FirstPrefs(a4)
  1082.         bne.s    .NoPrefs
  1083.         lea    PrefsFileName(a4),a1
  1084.         bsr    StrCpy
  1085.         ST    HadHardPrefs(a4)
  1086. .NoPrefs    rts
  1087. **********************************************************************
  1088. *                       Parse the command line                       *
  1089. **********************************************************************
  1090. GetCommandLine    move.l    #((HELP_ARG+1)*4),d0        ; Get buffer for parsed arguments
  1091.         move.l    #MEMF_CLEAR,d1
  1092.         CALLSYS    AllocVec
  1093.         move.l    d0,Args
  1094.         moveq    #0,d7
  1095.         move.l    #MEMORY_ERR,ErrorPrefs(a4)    ; Set Errornumber
  1096.         tst.l    d0
  1097.         beq    .HelpDone
  1098.         move.l    #CLITemplate,d1            ; Parse commandline
  1099.         move.l    Args,d2
  1100.         moveq    #0,d3
  1101.         RELLIB    ReadArgs,_DOSBase
  1102.         move.l    d0,MyRDArgs
  1103.         move.l    #NO_ERR,ErrorPrefs(a4)        ; Set errornumber
  1104.         tst.l    d0
  1105.         beq.s    .Error
  1106.  
  1107.         move.l    Args,a5                ; Now check args
  1108.  
  1109.         tst.l    (PREFS_ARG*4)(a5)        ; Alternative Prefs-File ?
  1110.         beq.s    .NoPrefs
  1111.         move.l    (PREFS_ARG*4)(a5),a0
  1112.         lea    PrefsFileName(a4),a1
  1113.         bsr    StrCpy
  1114.         ST    HadHardPrefs(a4)
  1115. .NoPrefs    tst.l    (HELP_ARG*4)(a5)        ; Display Help ???
  1116.         beq.s    .NoCommand
  1117.         RELLIB    Output,_DOSBase
  1118.         move.l    d0,d1
  1119.         LOCLEA    CliHelpPage,a0
  1120.         move.l    a0,d2
  1121.         DOLIB    FPuts
  1122.         moveq    #2,d7
  1123.         move.l    #NO_ERR,ErrorPrefs(a4)
  1124.         bra.s    .HelpDone
  1125. .NoCommand    moveq    #1,d7
  1126.         bra.s    .HelpDone
  1127. .Error        DOLIB    IoErr                ; On error get code
  1128.         move.l    d0,d1                ; ... and display the message
  1129.         lea    CommandHeader(pc),a0
  1130.         move.l    a0,d2
  1131.         DOLIB    PrintFault
  1132.         moveq    #0,d7
  1133. .HelpDone    tst.l    MyRDArgs
  1134.         beq.s    .NoRDArgs
  1135.         move.l    MyRDArgs,d1            ; Free structure passed by ReadArgs()
  1136.         RELLIB    FreeArgs,_DOSBase
  1137. .NoRDArgs    tst.l    Args
  1138.         beq.s    .NoArgs
  1139.         move.l    Args,a1            ; Free Vector-Table
  1140.         CALLSYS    FreeVec
  1141. .NoArgs        rts
  1142. **********************************************************************
  1143. *             Definition for the template and ToolTypes              *
  1144. **********************************************************************
  1145. NoString    dc.b    "NO",0
  1146. PrefsStr    dc.b    "SETTINGS",0
  1147.         EVEN
  1148. CLITemplate    dc.b    "R=SETTINGS/K,HELP/S",0
  1149.         EVEN
  1150. CommandHeader    dc.b    "KCommodity error occured ",0
  1151.         EVEN
  1152. PREFS_ARG    EQU    0
  1153. HELP_ARG    EQU    1
  1154.  
  1155.  
  1156.  
  1157. **********************************************************************
  1158. *                Try to read in the default PrefsFile                *
  1159. **********************************************************************
  1160. LoadPrefs    move.l    #GD_WindowList,d0
  1161.         lea    LockGads(a4),a0
  1162.         move.l    LockHandle(a4),a1
  1163.         move.l    #~0,a2
  1164.         RELLIB    SetListViewLst,_KCXBase
  1165.         move.l    #GD_TagTaskList,d0
  1166.         lea    TagScrGads(a4),a0
  1167.         move.l    TagScrHandle(a4),a1
  1168.         move.l    #~0,a2
  1169.         DOLIB    SetListViewLst
  1170.         lea    WindowBase(a4),a0
  1171.         DOLIB    FreeWindows        ; Free windows
  1172.         lea    TaskWinBase(a4),a0
  1173.         DOLIB    FreeWindows
  1174.         lea    TagScrsTasks(a4),a0
  1175.         DOLIB    FreeWindows
  1176.  
  1177.         move.l    #NOIFF_ERR,ErrorPrefs(a4)
  1178.         RELLIB    AllocIFF,_IFFParseBase
  1179.         move.l    d0,MyIFFHandle(a4)
  1180.         tst.l    d0
  1181.         beq    .LoadError1
  1182.  
  1183.         lea    PrefsFileName(a4),a0
  1184.         move.l    a0,d1            ; Try to open user-defined file
  1185.         move.l    d1,PrefsErrArg(a4)
  1186.         move.l    #MODE_OLDFILE,d2
  1187.         RELLIB    Open,_DOSBase
  1188.         tst.l    d0
  1189.         bne.s    .GotPrefFile
  1190.         tst.b    FirstPrefs(a4)
  1191.         bne    .DosLoadError
  1192.         tst.b    HadHardPrefs(a4)
  1193.         bne    .EndLoad
  1194.  
  1195.         lea    DirPrefsName,a0
  1196.         lea    PrefsFileName(a4),a1
  1197.         bsr    StrCpy
  1198.  
  1199.         move.l    #DirPrefsName,d1    ; Try to open file in current directory
  1200.         move.l    d1,PrefsErrArg(a4)
  1201.         move.l    #MODE_OLDFILE,d2
  1202.         DOLIB    Open
  1203.         tst.l    d0
  1204.         bne.s    .GotPrefFile
  1205.  
  1206.         lea    EnvPrefsName,a0
  1207.         lea    PrefsFileName(a4),a1
  1208.         bsr    StrCpy
  1209.  
  1210.         move.l    #EnvPrefsName,d1    ; Try to open File within env:kcx/
  1211.         move.l    d1,PrefsErrArg(a4)
  1212.         move.l    #MODE_OLDFILE,d2
  1213.         DOLIB    Open
  1214.         tst.l    d0
  1215.         beq    .EndLoad
  1216.  
  1217. .GotPrefFile    move.l    MyIFFHandle(a4),a0
  1218.         move.l    d0,iff_Stream(a0)
  1219.  
  1220.         RELLIB    InitIFFasDOS,_IFFParseBase
  1221.  
  1222.         move.l    MyIFFHandle(a4),a0
  1223.         move.l    #IFFF_READ,d0
  1224.         DOLIB    OpenIFF
  1225.         tst.l    d0
  1226.         bne    .LoadError
  1227.  
  1228.         move.l    MyIFFHandle(a4),a0    ; Find version ID
  1229.         move.l    #'KCXM',d0
  1230.         move.l    #'VERS',d1
  1231.         DOLIB    PropChunk
  1232.         tst.l    d0
  1233.         bne    .LoadError
  1234.  
  1235.         move.l    MyIFFHandle(a4),a0        ; Get to 'KCXM' -> 'PREF'
  1236.         move.l    #'KCXM',d0
  1237.         move.l    #'PREF',d1
  1238.         DOLIB    StopChunk
  1239.         tst.l    d0
  1240.         bne    .LoadError
  1241.  
  1242.         move.l    MyIFFHandle(a4),a0        ; Scan to chunk
  1243.         move.l    #IFFPARSE_SCAN,d0
  1244.         DOLIB    ParseIFF
  1245.         tst.l    d0
  1246.         bne    .LoadError
  1247.  
  1248. .ScannedFile    move.l    MyIFFHandle(a4),a0        ; Did we have a VERSion chunk ?
  1249.         move.l    #'KCXM',d0
  1250.         move.l    #'VERS',d1
  1251.         DOLIB    FindProp
  1252.         tst.l    d0
  1253.         beq.s    .PrefsError
  1254.         move.l    d0,a0                ; Correct version ?
  1255.         move.l    spr_Data(a0),a0
  1256.         lea    VersChunk,a1
  1257.         move.w    (a0)+,d0
  1258.         move.w    (a0),d1
  1259.         cmp.w    (a1),d0
  1260.         bne.s    .PrefsError
  1261.         cmp.w    2(a1),d1
  1262.         beq.s    .IsPrefs
  1263. .PrefsError    move.l    #PREFS_ERR,ErrorPrefs(a4)
  1264.         lea    VersionStr,a0
  1265.         move.l    a0,PrefsErrArg(a4)
  1266.         bsr    DisplayError
  1267.         bra    .LoadError
  1268.  
  1269. .IsPrefs    move.l    MyIFFHandle(a4),a0        ; Read Bool qualifiers
  1270.         lea    BOOLQUALSTART(a4),a1
  1271.         move.l    #FLAGSET,d0
  1272.         DOLIB    ReadChunkBytes
  1273.         cmp.l    #FLAGSET,d0
  1274.         bne    .LoadError
  1275.  
  1276.         move.l    MyIFFHandle(a4),a0        ; Read Long qualifiers
  1277.         lea    LONGQUALSTART(a4),a1
  1278.         move.l    #LONGQUAL,d0
  1279.         DOLIB    ReadChunkBytes
  1280.         cmp.l    #LONGQUAL,d0
  1281.         bne    .LoadError
  1282.  
  1283.         lea    HotKeyGadStat,a3        ; Read HotKey definitions
  1284.         move.l    #HOTKEYNUM-1,d7
  1285. .LoopHKeys    move.l    MyIFFHandle(a4),a0
  1286.         move.l    (a3)+,a1
  1287.         add.l    a4,a1
  1288.         move.l    #40,d0
  1289.         DOLIB    ReadChunkBytes
  1290.         cmp.l    #40,d0
  1291.         bne    .LoadError
  1292.         dbf    d7,.LoopHKeys
  1293.  
  1294.         move.l    MyIFFHandle(a4),a0        ; Read User-Shell command
  1295.         lea    SystemComm(a4),a1
  1296.         move.l    #256,d0
  1297.         DOLIB    ReadChunkBytes
  1298.         cmp.l    #256,d0
  1299.         bne    .LoadError
  1300.  
  1301.         move.l    MyIFFHandle(a4),a0        ; Read Logfilename
  1302.         lea    LogFileName(a4),a1
  1303.         move.l    #300,d0
  1304.         DOLIB    ReadChunkBytes
  1305.         cmp.l    #300,d0
  1306.         bne    .LoadError
  1307.  
  1308.         move.l    MyIFFHandle(a4),a0        ; Read Public Screen list
  1309.         lea    PubScreenName(a4),a1
  1310.         move.l    #256,d0
  1311.         DOLIB    ReadChunkBytes
  1312.         cmp.l    #256,d0
  1313.         bne    .LoadError
  1314.  
  1315.         move.l    MyIFFHandle(a4),a0        ; Read FKeys
  1316.         lea    FKeys(a4),a1
  1317.         move.l    #(MAXFKEYWIDTH+2)*10*4,d0
  1318.         DOLIB    ReadChunkBytes
  1319.         cmp.l    #(MAXFKEYWIDTH+2)*10*4,d0
  1320.         bne    .LoadError
  1321.  
  1322.         move.l    MyIFFHandle(a4),a0        ; Read sample name
  1323.         lea    AlSampleName(a4),a1
  1324.         move.l    #256,d0
  1325.         DOLIB    ReadChunkBytes
  1326.         cmp.l    #256,d0
  1327.         bne    .LoadError
  1328.  
  1329.         move.l    MyIFFHandle(a4),a0        ; Read format drive name
  1330.         lea    FormatDriveName(a4),a1
  1331.         move.l    #32,d0
  1332.         DOLIB    ReadChunkBytes
  1333.         cmp.l    #32,d0
  1334.         bne    .LoadError
  1335.  
  1336.         move.l    MyIFFHandle(a4),a0        ; Read window positions
  1337.         lea    MainWinLeft(a4),a1
  1338.         move.l    #WINPOSLEN,d0
  1339.         DOLIB    ReadChunkBytes
  1340.         cmp.l    #WINPOSLEN,d0
  1341.         bne    .LoadError
  1342.  
  1343.         clr.w    NumLockEntries(a4)
  1344.         clr.w    TagScrEntry(a4)
  1345.         clr.w    SelWindow(a4)
  1346.         clr.l    GlobalTagAdr(a4)
  1347.         move.w    #-1,TagScrEntry(a4)
  1348.         move.w    #-1,SelWindow(a4)
  1349.         move.l    #-1,HotKeyChange(a4)
  1350.         lea    WindowBase(a4),a0        ; Read in window names
  1351.         lea    NumWindows(a4),a1
  1352.         move.l    #lw_Name,d6
  1353.         move.l    #lw_SIZEOF,d5
  1354.         move.l    #82,d4
  1355.         bsr.s    .ReadNameChunk
  1356.         tst.l    d0
  1357.         bne    .LoadError
  1358.         lea    TaskWinBase(a4),a0        ; Read task names
  1359.         lea    NumTaskWins(a4),a1
  1360.         move.l    #lw_Name,d6
  1361.         move.l    #lw_SIZEOF,d5
  1362.         move.l    #82,d4
  1363.         bsr.s    .ReadNameChunk
  1364.         tst.l    d0
  1365.         bne    .LoadError
  1366.         lea    TagScrsTasks(a4),a0        ; Read tag screen task names
  1367.         lea    TagScrNum(a4),a1
  1368.         move.l    #tagscr_Name,d6
  1369.         move.l    #tagscr_SIZEOF,d5
  1370.         move.l    #tagscr_SIZEOF-LN_SIZE,d4
  1371.         bsr.s    .ReadNameChunk
  1372.         tst.l    d0
  1373.         bne    .LoadError
  1374.         lea    TagScrsTasks(a4),a2        ; Search for Global entry
  1375.         TSTLIST    a2
  1376.         beq.s    .GotEnd
  1377.         move.l    LH_HEAD(a2),a2
  1378. .FindGlobal    move.l    a2,d0
  1379.         beq.s    .GotEnd
  1380.         tst.b    tagscr_Type(a2)
  1381.         bne.s    .GotGlobal
  1382.         SUCC    a2,a2
  1383.         bra.s    .FindGlobal
  1384. .GotGlobal    move.l    a2,GlobalTagAdr(a4)
  1385.         LOCLEA    GlobalTagName,a0
  1386.         lea    tagscr_Name(a2),a1
  1387.         bsr    StrCpy
  1388. .GotEnd        moveq    #0,d0
  1389.         bra    .LoadError
  1390.  
  1391. .ReadNameChunk    move.l    a0,a3                ; Copy pointer to other register
  1392.         move.l    a1,a2
  1393.         NEWLIST    a0
  1394.         move.l    MyIFFHandle(a4),a0
  1395.         moveq    #2,d0
  1396.         RELLIB    ReadChunkBytes,_IFFParseBase
  1397.         cmp.l    #2,d0
  1398.         bne.s    .NameLoadError
  1399.         move.w    (a2),d7                ; Get number of entries
  1400.         subq.w    #1,d7
  1401.         blt.s    .EndReadChunk
  1402. .LoopWins    move.l    d5,d0                ; Read in window names
  1403.         move.l    #MEMF_CLEAR,d1
  1404.         CALLSYS    AllocVec
  1405.         tst.l    d0
  1406.         bne.s    .GotEntry
  1407.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  1408.         bsr    DisplayError
  1409.         moveq    #0,d0
  1410.         bra.s    .NameLoadError
  1411. .GotEntry    move.l    a3,a0                ; Add entry
  1412.         move.l    d0,a1
  1413.         move.l    d0,a2
  1414.         ADDTAIL
  1415.         move.l    MyIFFHandle(a4),a0
  1416.         lea    0(a2,d6),a1
  1417.         move.l    a1,LN_NAME(a2)
  1418.         move.l    d4,d0
  1419.         RELLIB    ReadChunkBytes,_IFFParseBase
  1420.         tst.l    d0
  1421.         bne.s    .GotName
  1422.         move.l    a2,a1
  1423.         REMOVE
  1424.         move.l    a2,a1
  1425.         CALLSYS    FreeVec
  1426.         bra.s    .EndLoad
  1427. .GotName    cmp.l    d4,d0
  1428.         bne.s    .NameLoadError
  1429.         dbf    d7,.LoopWins
  1430. .EndReadChunk    moveq    #0,d0
  1431. .NameLoadError    rts
  1432.  
  1433. .LoadError    tst.l    d0                ; Handle errors ...
  1434.         beq.s    .EndLoad
  1435.         neg.l    d0
  1436.         add.l    #400,d0
  1437.         move.l    d0,ErrorPrefs(a4)
  1438. .LoadError1    bsr    DisplayError
  1439.         bra.s    .EndLoad
  1440. .DosLoadError    RELLIB    IoErr,_DOSBase
  1441.         move.l    d0,ErrorPrefs(a4)
  1442.         bsr    DisplayError
  1443. .EndLoad    tst.l    MyIFFHandle(a4)            ; and close resources
  1444.         beq.s    .NoHandle
  1445.         move.l    MyIFFHandle(a4),a0
  1446.         RELLIB    CloseIFF,_IFFParseBase
  1447.         move.l    MyIFFHandle(a4),a0
  1448.         tst.l    iff_Stream(a0)
  1449.         beq.s    .NoStream
  1450.         move.l    iff_Stream(a0),d1
  1451.         RELLIB    Close,_DOSBase
  1452. .NoStream    move.l    MyIFFHandle(a4),a0
  1453.         RELLIB    FreeIFF,_IFFParseBase
  1454.  
  1455. .NoHandle    bsr    SetSetGads            ; Set window gadgets
  1456.         bsr    SetMiscGads
  1457.         bsr    SetClockDefGads
  1458.         bsr    SetBlankGads
  1459.         bsr    SetCycleGads
  1460.         bsr    SetTagScrGads
  1461.         bsr    SetMouseGads
  1462.         bsr    SetFKeyGads
  1463.         bsr    SetPrefsGads
  1464.         bsr    SetAlarmGads
  1465.  
  1466.         move.l    #GD_TagTaskList,d0
  1467.         lea    TagScrGads(a4),a0
  1468.         move.l    TagScrHandle(a4),a1
  1469.         lea    TagScrsTasks(a4),a2
  1470.         RELLIB    SetListViewLst,_KCXBase
  1471.  
  1472.         move.l    #GD_WindowList,d0        ; Set lock window gadgets
  1473.         lea    LockGads(a4),a0
  1474.         move.l    LockHandle(a4),a1
  1475.         lea    WindowBase(a4),a2
  1476.         DOLIB    SetListViewLst
  1477.         move.w    SelWindow(a4),d1
  1478.         moveq    #0,d2
  1479.         DOLIB    SetListViewGad
  1480.         move.l    #GD_WindowName,d0
  1481.         sub.l    a2,a2
  1482.         DOLIB    SetStringGad
  1483.         moveq    #1,d1
  1484.         DOLIB    GhostGadget
  1485.         move.l    #GD_SelectWindow,d0
  1486.         DOLIB    GhostGadget
  1487.         move.l    #GD_DeleteWindow,d0
  1488.         DOLIB    GhostGadget
  1489.  
  1490.         cmp.l    #SNAPMEMPAGE,PageNum(a4)
  1491.         bne.s    .RestoreNormal
  1492.         move.l    SavedPage(a4),d0
  1493.         move.l    d0,OldPageNum(a4)
  1494.         bra.s    .GotPage
  1495. .RestoreNormal    move.l    SavedPage(a4),d0
  1496.         move.l    d0,PageNum(a4)
  1497.  
  1498. .GotPage    lea    HotKeyGadStat,a3        ; Remake HotKeys
  1499.         lea    HotKeyGadVars,a5
  1500.         move.l    #HOTKEYNUM-1,d7
  1501. .SetHKeys    movem.l    (a5),d0-d2
  1502.         sub.l    a0,a0
  1503.         tst.l    d0
  1504.         beq.s    .NoWindow
  1505.         move.l    0(a4,d0),a0
  1506. .NoWindow    lea    0(a4,d1),a1
  1507.         move.l    0(a4,d2),a2
  1508.         movem.l    a3/a5,-(sp)
  1509.         move.l    (a3),d0
  1510.         lea    0(a4,d0),a3
  1511.         move.l    a3,a5
  1512.         bsr    RemakeHotKey
  1513.         movem.l    (sp)+,a3/a5
  1514.         addq.l    #4,a3
  1515.         lea    12(a5),a5
  1516.         dbf    d7,.SetHKeys
  1517.  
  1518.         lea    WindowHandles,a2        ; Reposition windows
  1519.         lea    MainWinLeft(a4),a3
  1520.         move.w    #WINDOWNUM-1,d7
  1521. .LoopWinPos    move.w    (a2)+,d0
  1522.         tst.l    0(a4,d0)
  1523.         beq.s    .NoWin
  1524.         move.l    0(a4,d0),a0
  1525.         movem.w    (a3),d0-d1
  1526.         move.w    wd_Width(a0),d2
  1527.         move.w    wd_Height(a0),d3
  1528.         RELLIB    ChangeWindowBox,_IntuitionBase
  1529. .NoWin        addq.l    #8,a3
  1530.         dbf    d7,.LoopWinPos
  1531.  
  1532. .End        move.b    #1,FirstPrefs(a4)
  1533.         move.b    ShowClock(a4),d0
  1534.         move.b    d0,OldClockState(a4)
  1535.         move.l    BackPort(a4),a0
  1536.         move.l    PrefsPort(a4),a1
  1537.         move.l    #COM_NEWPREFS,d0
  1538.         RELLIB    ComPut,_KCXBase
  1539.         move.l    #NO_ERR,ErrorPrefs(a4)
  1540.         rts
  1541.  
  1542.  
  1543.  
  1544.  
  1545.  
  1546. **********************************************************************
  1547. *            On a save to ENV: do another save to ENVARC:            *
  1548. **********************************************************************
  1549. DoublePrefs    link    a5,#-256
  1550.  
  1551.         move.l    a5,-(sp)
  1552.         bsr.s    SavePrefs
  1553.         move.l    (sp)+,a5
  1554.  
  1555.         lea    PrefsFileName(a4),a0
  1556.         lea    EnvPrefsName,a1
  1557.         moveq    #-1,d7
  1558.         bsr    StrCmp
  1559.         tst.l    d0
  1560.         bne.s    .End
  1561.         tst.b    d6
  1562.         bne.s    .End
  1563.  
  1564.         lea    PrefsFileName(a4),a0
  1565.         lea    -256(a5),a1
  1566.         bsr    StrCpy
  1567.  
  1568.         lea    EnvArcPrefsName,a0
  1569.         lea    PrefsFileName(a4),a1
  1570.         bsr    StrCpy
  1571.  
  1572.         lea    EnvArcDirName,a0
  1573.         move.l    a0,d1
  1574.         RELLIB    CreateDir,_DOSBase
  1575.         tst.l    d0
  1576.         bgt.s    .NewDir
  1577.         DOLIB    IoErr
  1578.         cmp.l    #ERROR_OBJECT_EXISTS,d0
  1579.         beq.s    .NoNewDir
  1580.         move.l    d0,ErrorPrefs(a4)
  1581.         bsr    DisplayError
  1582.         bra.s    .End
  1583. .NewDir        move.l    d0,d1
  1584.         DOLIB    UnLock
  1585.  
  1586. .NoNewDir    move.l    a5,-(sp)
  1587.         bsr.s    SavePrefs
  1588.         move.l    (sp)+,a5
  1589.  
  1590.         lea    -256(a5),a0
  1591.         lea    PrefsFileName(a4),a1
  1592.         bsr    StrCpy
  1593.  
  1594. .End        unlk    a5
  1595.         rts
  1596.  
  1597.  
  1598. **********************************************************************
  1599. *                      Save preferences to disk                      *
  1600. **********************************************************************
  1601. SavePrefs    cmp.l    #SNAPMEMPAGE,PageNum(a4)
  1602.         bne.s    .NormalPage
  1603.         move.l    OldPageNum(a4),d0
  1604.         move.l    d0,SavedPage(a4)
  1605.         bra.s    .GotPage
  1606. .NormalPage    move.l    PageNum(a4),d0
  1607.         move.l    d0,SavedPage(a4)
  1608.  
  1609. .GotPage    move.l    #NOIFF_ERR,ErrorPrefs(a4)
  1610.         RELLIB    AllocIFF,_IFFParseBase
  1611.         move.l    d0,MyIFFHandle(a4)
  1612.         tst.l    d0
  1613.         beq    .SaveError1
  1614.  
  1615.         lea    PrefsFileName(a4),a0
  1616.         move.l    a0,d1
  1617.         move.l    d1,PrefsErrArg(a4)
  1618.         move.l    #MODE_NEWFILE,d2
  1619.         RELLIB    Open,_DOSBase
  1620.         move.l    MyIFFHandle(a4),a0
  1621.         move.l    d0,iff_Stream(a0)
  1622.         tst.l    d0
  1623.         beq    .DosSaveError
  1624.  
  1625.         RELLIB    InitIFFasDOS,_IFFParseBase
  1626.  
  1627.         move.l    MyIFFHandle(a4),a0
  1628.         move.l    #IFFF_WRITE,d0
  1629.         DOLIB    OpenIFF
  1630.         tst.l    d0
  1631.         bne    .SaveError
  1632.  
  1633.         move.l    MyIFFHandle(a4),a0        ; Push FORM chunk
  1634.         move.l    #'KCXM',d0
  1635.         move.l    #'FORM',d1
  1636.         move.l    #IFFSIZE_UNKNOWN,d2
  1637.         DOLIB    PushChunk
  1638.         tst.l    d0
  1639.         bne    .SaveError
  1640.  
  1641.         move.l    MyIFFHandle(a4),a0        ; Push Version Chunk
  1642.         move.l    #'KCXM',d0
  1643.         move.l    #'VERS',d1
  1644.         move.l    #IFFSIZE_UNKNOWN,d2
  1645.         DOLIB    PushChunk
  1646.         tst.l    d0
  1647.         bne    .SaveError
  1648.  
  1649.         move.l    MyIFFHandle(a4),a0
  1650.         lea    VersChunk,a1
  1651.         move.l    #VersChunkSize,d0
  1652.         DOLIB    WriteChunkBytes
  1653.         cmp.l    #VersChunkSize,d0
  1654.         bne    .SaveError
  1655.  
  1656.         move.l    MyIFFHandle(a4),a0
  1657.         DOLIB    PopChunk
  1658.         tst.l    d0
  1659.         bne    .SaveError
  1660.  
  1661.         move.l    MyIFFHandle(a4),a0        ; Write Preferences
  1662.         move.l    #'KCXM',d0
  1663.         move.l    #'PREF',d1
  1664.         move.l    #IFFSIZE_UNKNOWN,d2
  1665.         DOLIB    PushChunk
  1666.         tst.l    d0
  1667.         bne    .SaveError
  1668.  
  1669.         move.l    MyIFFHandle(a4),a0        ; Write Bool qualifiers
  1670.         lea    BOOLQUALSTART(a4),a1
  1671.         move.l    #FLAGSET,d0
  1672.         DOLIB    WriteChunkBytes
  1673.         cmp.l    #FLAGSET,d0
  1674.         bne    .SaveError
  1675.  
  1676.         move.l    MyIFFHandle(a4),a0        ; Write Long qualifiers
  1677.         lea    LONGQUALSTART(a4),a1
  1678.         move.l    #LONGQUAL,d0
  1679.         DOLIB    WriteChunkBytes
  1680.         cmp.l    #LONGQUAL,d0
  1681.         bne    .SaveError
  1682.  
  1683.         lea    HotKeyGadStat,a3        ; Write HotKey definitions
  1684.         move.l    #HOTKEYNUM-1,d7
  1685. .LoopHKeys    move.l    MyIFFHandle(a4),a0
  1686.         move.l    (a3)+,a1
  1687.         add.l    a4,a1
  1688.         move.l    #40,d0
  1689.         DOLIB    WriteChunkBytes
  1690.         cmp.l    #40,d0
  1691.         bne    .SaveError
  1692.         dbf    d7,.LoopHKeys
  1693.  
  1694.         move.l    MyIFFHandle(a4),a0        ; Write User-Shell command
  1695.         lea    SystemComm(a4),a1
  1696.         move.l    #256,d0
  1697.         DOLIB    WriteChunkBytes
  1698.         cmp.l    #256,d0
  1699.         bne    .SaveError
  1700.  
  1701.         move.l    MyIFFHandle(a4),a0        ; Write Logfilename
  1702.         lea    LogFileName(a4),a1
  1703.         move.l    #300,d0
  1704.         DOLIB    WriteChunkBytes
  1705.         cmp.l    #300,d0
  1706.         bne    .SaveError
  1707.  
  1708.         move.l    MyIFFHandle(a4),a0        ; Write Public Screen list
  1709.         lea    PubScreenName(a4),a1
  1710.         move.l    #256,d0
  1711.         DOLIB    WriteChunkBytes
  1712.         cmp.l    #256,d0
  1713.         bne    .SaveError
  1714.  
  1715.         move.l    MyIFFHandle(a4),a0        ; Write FKeys
  1716.         lea    FKeys(a4),a1
  1717.         move.l    #(MAXFKEYWIDTH+2)*10*4,d0
  1718.         DOLIB    WriteChunkBytes
  1719.         cmp.l    #(MAXFKEYWIDTH+2)*10*4,d0
  1720.         bne    .SaveError
  1721.  
  1722.         move.l    MyIFFHandle(a4),a0        ; Write Sample name
  1723.         lea    AlSampleName(a4),a1
  1724.         move.l    #256,d0
  1725.         DOLIB    WriteChunkBytes
  1726.         cmp.l    #256,d0
  1727.         bne    .SaveError
  1728.  
  1729.         move.l    MyIFFHandle(a4),a0        ; Write Format Drive name
  1730.         lea    FormatDriveName(a4),a1
  1731.         move.l    #32,d0
  1732.         DOLIB    WriteChunkBytes
  1733.         cmp.l    #32,d0
  1734.         bne    .SaveError
  1735.  
  1736.         move.l    MyIFFHandle(a4),a0        ; Write Window sizes&positions
  1737.         lea    MainWinLeft(a4),a1
  1738.         move.l    #WINPOSLEN,d0
  1739.         DOLIB    WriteChunkBytes
  1740.         cmp.l    #WINPOSLEN,d0
  1741.         bne.s    .SaveError
  1742.  
  1743.         lea    WindowBase(a4),a2        ; Write window names to be locked
  1744.         lea    NumWindows(a4),a1
  1745.         move.l    #lw_Name,d6
  1746.         move.l    #82,d4
  1747.         bsr.s    .WriteListNames
  1748.         lea    TaskWinBase(a4),a2        ; Write task names to be locked
  1749.         lea    NumTaskWins(a4),a1
  1750.         move.l    #lw_Name,d6
  1751.         move.l    #82,d4
  1752.         bsr.s    .WriteListNames
  1753.         lea    TagScrsTasks(a4),a2        ; Write Tag Screen Tasks
  1754.         lea    TagScrNum(a4),a1
  1755.         move.l    #tagscr_Name,d6
  1756.         move.l    #tagscr_SIZEOF-LN_SIZE,d4
  1757.         bsr.s    .WriteListNames
  1758.         bra.s    .NamesWritten
  1759.  
  1760. .WriteListNames    move.l    MyIFFHandle(a4),a0        ; Write number of entries
  1761.         moveq    #2,d0
  1762.         DOLIB    WriteChunkBytes
  1763.         cmp.l    #2,d0
  1764.         bne.s    .SaveError
  1765.         SUCC    a2,a2
  1766. .LoopNames    TSTLST2    a2,a0
  1767.         beq.s    .NoNames
  1768.         move.l    MyIFFHandle(a4),a0
  1769.         lea    0(a2,d6),a1
  1770.         move.l    d4,d0
  1771.         DOLIB    WriteChunkBytes
  1772.         cmp.l    d4,d0
  1773.         bne.s    .SaveError
  1774.         SUCC    a2,a2
  1775.         bra.s    .LoopNames
  1776. .NoNames    rts
  1777.  
  1778. .NamesWritten    move.l    MyIFFHandle(a4),a0        ; Pop PREFS Chunk
  1779.         DOLIB    PopChunk
  1780.         tst.l    d0
  1781.         bne.s    .SaveError
  1782.  
  1783.         move.l    MyIFFHandle(a4),a0        ; Pop last Chunk (FORM)
  1784.         DOLIB    PopChunk
  1785.         tst.l    d0
  1786.         bne.s    .SaveError
  1787.  
  1788. .SaveError    moveq    #0,d6
  1789.         tst.l    d0                ; Dos error occured ?
  1790.         beq.s    .EndSave
  1791.         neg.l    d0
  1792.         add.l    #400,d0                ; Identify error code
  1793.         move.l    d0,ErrorPrefs(a4)
  1794. .SaveError1    bsr    DisplayError
  1795.         moveq    #1,d6
  1796.         bra.s    .EndSave
  1797. .DosSaveError    RELLIB    IoErr,_DOSBase
  1798.         move.l    d0,ErrorPrefs(a4)
  1799.         bsr    DisplayError
  1800. .EndSave    tst.l    MyIFFHandle(a4)
  1801.         beq.s    .NoHandle
  1802.         move.l    MyIFFHandle(a4),a0
  1803.         RELLIB    CloseIFF,_IFFParseBase
  1804.         move.l    MyIFFHandle(a4),a0
  1805.         tst.l    iff_Stream(a0)
  1806.         beq.s    .NoStream
  1807.         move.l    iff_Stream(a0),d1
  1808.         RELLIB    Close,_DOSBase
  1809. .NoStream    move.l    MyIFFHandle(a4),a0
  1810.         RELLIB    FreeIFF,_IFFParseBase
  1811. .NoHandle    rts
  1812.  
  1813.  
  1814.  
  1815. **********************************************************************
  1816. *                 Check the main part of this proggy                 *
  1817. **********************************************************************
  1818. CheckInput    tst.w    AbortPrefs(a4)            ; Quit our broker ?
  1819.         bne    AbortInput
  1820.  
  1821.         move.l    #SIGBREAKF_CTRL_C,d0        ; Accept a BREAK (like from c:break)
  1822.         or.l    WindowPortSig(a4),d0        ; ... a window
  1823.         or.l    PrefsPortSig(a4),d0        ; ... Prefs port
  1824.         CALLSYS    Wait
  1825.         move.l    d0,ThisSig(a4)
  1826.  
  1827.         move.l    ThisSig(a4),d0
  1828.         and.l    #SIGBREAKF_CTRL_C,d0
  1829.         bne    AbortInput
  1830.  
  1831.         move.l    ThisSig(a4),d0            ; of a window ?
  1832.         and.l    WindowPortSig(a4),d0
  1833.         beq    NoWindowMsg
  1834.  
  1835. LoopWndMsg    move.l    WindowPort(a4),a0        ; Loop for all messages
  1836.         RELLIB    GT_GetIMsg,_GadToolsBase    ; Get gadtools message
  1837.         tst.l    d0
  1838.         beq    NoWindowMsg
  1839.         move.l    d0,a1
  1840.  
  1841.         move.l    im_Class(a1),d6            ; Get class
  1842.         moveq    #0,d5
  1843.         move.w    im_Code(a1),d5            ; Get code
  1844.         cmp.l    #IDCMP_VANILLAKEY,d6
  1845.         bne.s    .End
  1846.         move.w    im_Qualifier(a1),d4
  1847.         move.l    d5,d0
  1848.         bsr    GetUpperCase
  1849.         move.l    d0,d5
  1850. .End        move.l    d6,d0
  1851.         and.l    #(IDCMP_GADGETUP|IDCMP_GADGETDOWN),d0
  1852.         beq.s    .NoGad
  1853.         move.l    im_IAddress(a1),a2        ; Get gadget id
  1854.         move.w    gg_GadgetID(a2),d7
  1855.  
  1856. .NoGad        move.l    im_IDCMPWindow(a1),a3
  1857.         DOLIB    GT_ReplyIMsg            ; Reply gadtools msg
  1858.  
  1859.         move.l    a3,d0
  1860.         beq    LoopWndMsg
  1861.         lea    WindowHandles,a0
  1862.         lea    WindowRoutines,a1
  1863.         lea    WindowGads,a5
  1864.         move.l    #WINDOWNUM-1,d0
  1865. .FindWindow    move.w    (a0)+,d1
  1866.         cmp.l    0(a4,d1),a3
  1867.         bne.s    .GoOn
  1868.         move.l    (a1),a0
  1869.         cmp.l    #IDCMP_VANILLAKEY,d6
  1870.         bne.s    .NoKey
  1871.         cmp.b    #ESCKEY,d5
  1872.         bne.s    .NoEscKey
  1873.         move.l    #IDCMP_CLOSEWINDOW,d6
  1874.         moveq    #0,d7
  1875.         moveq    #-1,d5
  1876.         bra.s    .NoKey
  1877. .NoEscKey    move.w    (a5),d2
  1878.         lea    0(a4,d2.w),a5
  1879.         moveq    #0,d3
  1880. .CheckForKey    move.l    (a5),d0
  1881.         beq.s    .NoKey
  1882.         move.l    d0,a1
  1883.         move.l    gg_UserData(a1),d0
  1884.         cmp.b    d0,d5
  1885.         bne.s    .NotThisKey
  1886.         move.l    #IDCMP_GADGETUP,d6
  1887.         moveq    #-1,d5
  1888.         move.l    d3,d7
  1889.         bra.s    .NoKey
  1890. .NotThisKey    addq.w    #1,d3
  1891.         addq.l    #4,a5
  1892.         bra.s    .CheckForKey
  1893. .NoKey        jsr    (a0)
  1894.         bra    LoopWndMsg
  1895. .GoOn        addq.l    #4,a1
  1896.         addq.w    #2,a5
  1897.         dbf    d0,.FindWindow
  1898.         bra    LoopWndMsg
  1899.  
  1900. NoWindowMsg    move.l    ThisSig(a4),d0            ; Prefs port ???
  1901.         and.l    PrefsPortSig(a4),d0
  1902.         beq    CheckInput
  1903.         move.l    PrefsPort(a4),a0
  1904.         CALLSYS    GetMsg
  1905.         tst.l    d0
  1906.         beq    CheckInput
  1907.         move.l    d0,a1
  1908.         move.l    a1,-(sp)
  1909.         move.w    cmsg_Type(a1),d0        ; Get Type
  1910.         cmp.w    #COM_BACKTHERE,d0        ; Arrival of Back process ???
  1911.         bne.s    .NoBackCame
  1912.         moveq    #0,d1
  1913. .SetRemoveGad    move.l    #GD_RemoveGad,d0
  1914.         lea    MainGads(a4),a0
  1915.         move.l    MainHandle(a4),a1
  1916.         RELLIB    GhostGadget,_KCXBase
  1917.         move.l    #GD_HardCopy,d0
  1918.         DOLIB    GhostGadget
  1919.         move.l    #GD_BillWin,d0
  1920.         DOLIB    GhostGadget
  1921.         move.l    #GD_Format,d0
  1922.         DOLIB    GhostGadget
  1923.         move.l    #GD_Disable,d0
  1924.         DOLIB    GhostGadget
  1925.         move.l    #GD_Enable,d0
  1926.         DOLIB    GhostGadget
  1927.         bra.s    .ComDone
  1928. .NoBackCame    cmp.w    #COM_BACKGONE,d0        ; Back process left us ???
  1929.         bne.s    .NoBackGone
  1930.         moveq    #1,d1
  1931.         bra.s    .SetRemoveGad
  1932. .NoBackGone    cmp.w    #COM_REMOVEPREFS,d0        ; Should we quit ???
  1933.         bne.s    .NoPrefsQuit
  1934.         move.w    #1,AbortPrefs(a4)
  1935.         bra.s    .ComDone
  1936. .NoPrefsQuit
  1937. .ComDone    move.l    (sp)+,a1
  1938.         CALLSYS    ReplyMsg
  1939.         bra    CheckInput
  1940.  
  1941.         bra    CheckInput            ; Loop for all stuff
  1942. AbortInput    clr.w    AbortPrefs(a4)
  1943.         rts
  1944.  
  1945.  
  1946.  
  1947. **********************************************************************
  1948. *               Handle the gadgets of the main window                *
  1949. **********************************************************************
  1950. HandleMainWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  1951.         beq    CloseMainWin
  1952.  
  1953.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Windo moved ?
  1954.         bne.s    NoMainMove
  1955.         move.l    MainHandle(a4),a0
  1956.         lea    MainWinLeft(a4),a1
  1957.         bra    StoreWinPos
  1958.  
  1959. NoMainMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget picked ?
  1960.         bne    NoMainGadUp
  1961.  
  1962.         tst.l    d5
  1963.         bge.s    .NoKey
  1964.         cmp.w    #GD_RemoveGad,d7
  1965.         beq.s    .CheckButton
  1966.         cmp.w    #GD_HardCopy,d7
  1967.         beq.s    .CheckButton
  1968.         cmp.w    #GD_Format,d7
  1969.         beq.s    .CheckButton
  1970.         cmp.w    #GD_BillWin,d7
  1971.         beq.s    .CheckButton
  1972.         cmp.w    #GD_Disable,d7
  1973.         beq.s    .CheckButton
  1974.         cmp.w    #GD_Enable,d7
  1975.         beq.s    .CheckButton
  1976.         bra.s    .DoButton
  1977. .CheckButton    tst.l    BackPort(a4)
  1978.         beq.s    .NoKey
  1979. .DoButton    move.l    d7,d0
  1980.         lea    MainGads(a4),a0
  1981.         move.l    MainHandle(a4),a5
  1982.         bsr    ButtonCheck
  1983.  
  1984. .NoKey        cmp.w    #GD_Settings,d7            ; Open settings window ?
  1985.         beq    OpenSetWin
  1986.  
  1987.         cmp.w    #GD_Misc,d7            ; Open misc window ?
  1988.         beq    OpenMiscWin
  1989.  
  1990.         cmp.w    #GD_Blanking,d7            ; Open blanking window ?
  1991.         beq    OpenBlankWin
  1992.  
  1993.         cmp.w    #GD_Cycling,d7            ; Open cycling window ?
  1994.         beq    OpenCycleWin
  1995.  
  1996.         cmp.w    #GD_Mouse,d7            ; Open Mouse window ?
  1997.         beq    OpenMouseWin
  1998.  
  1999.         cmp.w    #GD_HotKey,d7            ; Open HotKeys window ?
  2000.         beq    OpenHotKeyWin
  2001.  
  2002.         cmp.w    #GD_FKey,d7            ; Open FKeys window ?
  2003.         beq    OpenFKeyWin
  2004.  
  2005.         cmp.w    #GD_Format,d7
  2006.         bne.s    NoFormWinGad
  2007.         move.l    BackPort(a4),d0
  2008.         beq.s    .End
  2009.         move.l    d0,a0
  2010.         move.l    PrefsPort(a4),a1
  2011.         move.l    #COM_OPENFORM,d0
  2012.         RELLIB    ComPut,_KCXBase
  2013. .End        rts
  2014.  
  2015. NoFormWinGad    cmp.w    #GD_BillWin,d7            ; Open Bill window ?
  2016.         bne.s    NoBillWinGad
  2017.         move.l    CheckerProc(a4),d0
  2018.         beq.s    .End
  2019.         move.l    d0,a1
  2020.         move.l    #SIGBILLWIN,d0
  2021.         CALLSYS    Signal
  2022. .End        rts
  2023.  
  2024. NoBillWinGad    cmp.w    #GD_BillPrefs,d7        ; Open prefs window ?
  2025.         beq    OpenPrefsWin
  2026.  
  2027.         cmp.w    #GD_Alarm,d7            ; Open alarm window ?
  2028.         beq    OpenAlarmWin
  2029.  
  2030.         cmp.w    #GD_ClockDef,d7            ; Open clock def window ?
  2031.         beq    OpenClockDefWin
  2032.  
  2033.         cmp.w    #GD_HardCopy,d7            ; Open Dump window ?
  2034.         bne.s    NoDumpGad
  2035.         move.l    BackPort(a4),d0
  2036.         beq.s    .End
  2037.         move.l    d0,a0
  2038.         move.l    PrefsPort(a4),a1
  2039.         move.l    #COM_PRINTER,d0
  2040.         RELLIB    ComPut,_KCXBase
  2041. .End        rts
  2042.  
  2043. NoDumpGad    cmp.w    #GD_LockWins,d7            ; Open Lock windows win ?
  2044.         beq    OpenLockWin
  2045.  
  2046.         cmp.w    #GD_TagScreens,d7        ; Open TagScreens window ?
  2047.         beq    OpenTagScrWin
  2048.  
  2049.         cmp.w    #GD_LoadPrefs,d7        ; Load prefs ?
  2050.         bne.s    NoLoadPrefs
  2051. LoadPrefsGad    pea    _LVOSetStringGad
  2052.         clr.l    -(sp)
  2053.         clr.l    -(sp)
  2054.         clr.w    -(sp)
  2055.         lea    PrefsFileName(a4),a0
  2056.         move.l    a0,-(sp)
  2057.         LOCLEA    PrefsLoadHeader,d0
  2058.         move.l    d0,-(sp)
  2059.         move.l    MainHandle(a4),-(sp)
  2060.         bsr    GetFileName
  2061.         lea    26(sp),sp
  2062.         tst.l    d0
  2063.         beq.s    .End
  2064.         bsr    LoadPrefs
  2065. .End        rts
  2066.  
  2067. NoLoadPrefs    cmp.w    #GD_SavePrefs,d7        ; Save Prefs ?
  2068.         bne.s    NoSavePrefsGad
  2069.         pea    _LVOSetStringGad
  2070.         pea    FRF_DOSAVEMODE
  2071.         clr.l    -(sp)
  2072.         clr.w    -(sp)
  2073.         lea    PrefsFileName(a4),a0
  2074.         move.l    a0,-(sp)
  2075.         LOCLEA    PrefsSaveHeader,d0
  2076.         move.l    d0,-(sp)
  2077.         move.l    MainHandle(a4),-(sp)
  2078.         bsr    GetFileName
  2079.         lea    26(sp),sp
  2080.         tst.l    d0
  2081.         beq.s    .End
  2082.         bsr    DoublePrefs
  2083. .End        rts
  2084.  
  2085. NoSavePrefsGad    cmp.w    #GD_RemoveGad,d7        ; Hide ???
  2086.         bne.s    NoRemoveGad
  2087.         tst.l    BackPort(a4)
  2088.         bne.s    .GoOn
  2089.         rts
  2090. .GoOn        bsr    BusyAllWins
  2091.         move.l    BackPort(a4),a0
  2092.         move.l    PrefsPort(a4),a1
  2093.         move.l    #COM_REMOVE,d0
  2094.         RELLIB    ComPut,_KCXBase
  2095.         moveq    #50,d1
  2096.         RELLIB    Delay,_DOSBase
  2097.         bsr    UnbusyAllWins
  2098.         rts
  2099.  
  2100. NoRemoveGad    cmp.w    #GD_Enable,d7            ; Enable Broker ?
  2101.         bne.s    NoEnableGad
  2102.         tst.l    BackPort(a4)
  2103.         bne.s    .GoOn
  2104.         rts
  2105. .GoOn        clr.b    Disabled(a4)
  2106.         bsr    EnableBroker
  2107.         rts
  2108.  
  2109. NoEnableGad    cmp.w    #GD_Disable,d7            ; Disable Broker ?
  2110.         bne.s    NoDisableGad
  2111.         tst.l    BackPort(a4)
  2112.         bne.s    .GoOn
  2113.         rts
  2114. .GoOn        bsr    DisableBroker
  2115.         move.b    #1,Disabled(a4)
  2116.         rts
  2117.  
  2118. NoDisableGad    cmp.w    #GD_Quit,d7            ; Quit stuff ?
  2119.         bne.s    NoQuitGad
  2120.         move.w    #1,AbortPrefs(a4)
  2121. NoQuitGad    rts
  2122.  
  2123. NoMainGadUp    cmp.l    #IDCMP_MENUPICK,d6        ; Menu Picked ???
  2124.         bne.s    NoMainMenu
  2125.  
  2126.         cmp.w    #MENUNULL,d5
  2127.         beq.s    .End
  2128.         move.l    MainMenu(a4),a0
  2129.         move.w    d5,d0
  2130.         ext.l    d0
  2131.         RELLIB    ItemAddress,_IntuitionBase
  2132.         move.l    d0,a0
  2133.         GTMENUITEM_USERDATA a0,a0
  2134.         move.l    a0,d0
  2135.         beq.s    .End
  2136.         jmp    (a0)
  2137. .End        rts
  2138.  
  2139. DisplayAbout    lea    MyEasyRequest,a1        ; Display Easy-Requester
  2140.         move.l    #EasyTitle,es_Title(a1)
  2141.         LOCLEA    AboutText,a0
  2142.         move.l    a0,es_TextFormat(a1)
  2143.         LOCLEA    AboutGadgets,a0
  2144.         move.l    a0,es_GadgetFormat(a1)
  2145.         sub.l    a0,a0
  2146.         sub.l    a2,a2
  2147.         lea    VersionData,a3
  2148.         RELLIB    EasyRequestArgs,_IntuitionBase
  2149.         rts
  2150. EasyTitle    dc.b    "KCommodity V"
  2151.         REVISION
  2152.         dc.b    0
  2153.         EVEN
  2154. NoMainMenu    rts
  2155.  
  2156.  
  2157.  
  2158.  
  2159. **********************************************************************
  2160. *                       Handle Settings window                       *
  2161. **********************************************************************
  2162. HandleSetWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close Window ?
  2163.         beq    CloseSetWin
  2164.  
  2165.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  2166.         bne.s    NoSetMove
  2167.         move.l    SetHandle(a4),a0
  2168.         lea    SetWinLeft(a4),a1
  2169.         bra    StoreWinPos
  2170.  
  2171. NoSetMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget released ?
  2172.         bne    NoSetGadUp
  2173.  
  2174.         cmp.w    #GD_WriteEnv,d7            ; Environment vars ?
  2175.         bne.s    NoWriteEnvGad
  2176. WriteEnvKey    bchg    #0,SetEnv(a4)
  2177.         tst.b    SetEnv(a4)
  2178.         bne.s    .NoDel
  2179.         move.l    BackPort(a4),a0
  2180.         move.l    PrefsPort(a4),a1
  2181.         move.l    #COM_DELENVS,d0
  2182.         RELLIB    ComPut,_KCXBase
  2183. .NoDel        move.b    SetEnv(a4),d0
  2184.         move.l    #GD_WriteEnv,d1
  2185.         bra    SetSetBox
  2186.  
  2187. NoWriteEnvGad    cmp.w    #GD_WBFront,d7            ; WB to front ?
  2188.         bne.s    NoWBFrontGad
  2189. WBFrontKey    bchg    #0,WBFront(a4)
  2190.         move.b    WBFront(a4),d0
  2191.         move.l    #GD_WBFront,d1
  2192.         bra    SetSetBox
  2193.  
  2194. NoWBFrontGad    cmp.w    #GD_MapUmlauts,d7        ; Map umlauts ?
  2195.         bne.s    NoUmlautsGad
  2196. MapUmlautsKey    bchg    #0,MapUmlaut(a4)
  2197.         move.b    MapUmlaut(a4),d0
  2198.         move.l    #GD_MapUmlauts,d1
  2199.         bra    SetSetBox
  2200.  
  2201. NoUmlautsGad    cmp.w    #GD_MMBShift,d7            ; Changed MMB-Shift mode ?
  2202.         bne.s    NoMMBShiftGad
  2203. MMBShiftKey    bchg    #0,MMBShift(a4)
  2204.         move.b    MMBShift(a4),d0            ; Set Auto Center gadget
  2205.         move.l    #GD_MMBShift,d1
  2206.         bra    SetSetBox
  2207.  
  2208. NoMMBShiftGad    cmp.w    #GD_NoClick,d7            ; Change noclick state ?
  2209.         bne.s    NoNoClickGad
  2210. NoClickKey    bchg    #0,DriveNoClick(a4)
  2211.         move.b    DriveNoClick(a4),d0
  2212.         move.l    #GD_NoClick,d1
  2213.         bsr    SetSetBox
  2214.         bra    SetNoClick
  2215.  
  2216. NoNoClickGad    cmp.w    #GD_NoDisplayBeep,d7        ; Disable/Enable DisplayBeep ?
  2217.         bne.s    NoDisplayBGad
  2218. DisplayBeepKey    bchg    #0,NoDisplayBeep(a4)
  2219.         move.b    NoDisplayBeep(a4),d0
  2220.         move.l    #GD_NoDisplayBeep,d1
  2221.         bra    SetSetBox
  2222.  
  2223. NoDisplayBGad    cmp.w    #GD_MenuWrap,d7            ; Enable/Disable MenuWrap ?
  2224.         bne.s    NoMenuWrapGad
  2225. MenuWrapKey    bchg    #0,MenuWrap(a4)
  2226.         move.b    MenuWrap(a4),d0
  2227.         move.l    #GD_MenuWrap,d1
  2228.         bra    SetSetBox
  2229.  
  2230. NoMenuWrapGad    cmp.w    #GD_StringMenu,d7        ; Enable/Disable String-Menu-Shortcuts
  2231.         bne.s    NoStrMenuGad
  2232. StringMenuKey    bchg    #0,StringMenu(a4)
  2233.         move.b    StringMenu(a4),d0
  2234.         move.l    #GD_StringMenu,d1
  2235.         bra    SetSetBox
  2236.  
  2237. NoStrMenuGad    cmp.w    #GD_AvoidFlicker,d7        ; Enable/Disable flicker ???
  2238.         bne.s    NoFlickerGad
  2239. AvoidFlickerKey    bchg    #0,FlickerOff(a4)
  2240.         move.b    FlickerOff(a4),d0
  2241.         move.l    #GD_AvoidFlicker,d1
  2242.         bsr    SetSetBox
  2243.         move.l    BackPort(a4),a0
  2244.         move.l    PrefsPort(a4),a1
  2245.         move.l    #COM_FLICKER,d0
  2246.         RELLIB    ComPut,_KCXBase
  2247.         rts
  2248. NoFlickerGad    rts
  2249. NoSetGadUp    rts
  2250.  
  2251.  
  2252. **********************************************************************
  2253. *                       Handle the Misc window                       *
  2254. **********************************************************************
  2255. HandleMiscWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  2256.         beq    CloseMiscWin
  2257.  
  2258.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  2259.         bne.s    NoMiscMove
  2260.         move.l    MiscHandle(a4),a0
  2261.         lea    MiscWinLeft(a4),a1
  2262.         bra    StoreWinPos
  2263.  
  2264. NoMiscMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget released ?
  2265.         bne    NoMiscGadUp
  2266.  
  2267.         cmp.w    #GD_KeyClick,d7            ; KeyClick ?
  2268.         bne.s    NoKeyClickGad
  2269.         bchg    #0,KeyClick(a4)
  2270.         move.b    KeyClick(a4),d0
  2271.         move.l    #GD_KeyClick,d1
  2272.         bra    SetMiscBox
  2273.  
  2274. NoKeyClickGad    cmp.w    #GD_ClickVol,d7            ; Change click vol ?
  2275.         bne.s    NoClickVolGad
  2276.         tst.l    d5
  2277.         ble.s    .Key
  2278.         ext.l    d5
  2279.         move.l    d5,ClickVol(a4)
  2280.         rts
  2281. .Key        move.l    ClickVol(a4),d0
  2282.         and.w    #(IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT),d4
  2283.         beq.s    .Up
  2284.         subq.l    #1,d0
  2285.         bne.s    .GoOn
  2286.         move.l    #64,d0
  2287.         bra.s    .GoOn
  2288. .Up        addq.l    #1,d0
  2289.         cmp.l    #65,d0
  2290.         bne.s    .GoOn
  2291.         moveq    #1,d0
  2292. .GoOn        move.l    d0,ClickVol(a4)
  2293.         move.l    d0,d1
  2294.         move.l    #GD_ClickVol,d0
  2295.         lea    MiscGads(a4),a0
  2296.         move.l    MiscHandle(a4),a1
  2297.         RELLIB    SetSliderGad,_KCXBase
  2298.         rts
  2299.  
  2300. NoClickVolGad    cmp.w    #GD_ESCClose,d7            ; Escclose ?
  2301.         bne.s    NoESCCloseGad
  2302.         bchg    #0,ESCClose(a4)
  2303.         move.b    ESCClose(a4),d0
  2304.         move.l    #GD_ESCClose,d1
  2305.         bra    SetMiscBox
  2306.  
  2307. NoESCCloseGad    cmp.w    #GD_ESCQual,d7            ; New Qualifier ?
  2308.         bne.s    NoESCQualGad
  2309.         tst.l    d5
  2310.         bge.s    .DoKey
  2311.         move.l    d7,d0
  2312.         lea    MiscGads(a4),a0
  2313.         move.l    MiscHandle(a4),a5
  2314.         bsr    ButtonCheck
  2315. .DoKey        move.w    #RESCKEY,NewCode(a4)
  2316.         move.w    ESCQual(a4),NewQual(a4)
  2317.         move.b    #1,KeepCode(a4)            ; Code may not be changed
  2318.         LOCLEA    ESCQualTxt,a0
  2319.         bsr    GetQualifier
  2320.         tst.w    NewCode(a4)
  2321.         beq.s    .End
  2322.         move.w    NewQual(a4),ESCQual(a4)
  2323.         bra    SetMiscGads
  2324. .End        rts
  2325.  
  2326. NoESCQualGad    cmp.w    #GD_UserShell,d7        ; New UserShell ?
  2327.         bne.s    NoUserShellGad
  2328.         tst.l    d5
  2329.         blt.s    .Key
  2330.         lea    SystemComm(a4),a0
  2331.         move.l    #GD_UserShell,d0
  2332.         lea    MiscGads(a4),a0
  2333.         RELLIB    GetGadgetPtr,_KCXBase
  2334.         move.l    gg_SpecialInfo(a0),a0
  2335.         move.l    si_Buffer(a0),a0
  2336.         lea    SystemComm(a4),a1
  2337.         bra    StrCpy
  2338. .Key        move.l    #GD_UserShell,d0
  2339.         lea    MiscGads(a4),a0
  2340.         move.l    MiscHandle(a4),a1
  2341.         RELLIB    ActStringGad,_KCXBase
  2342.         rts
  2343.  
  2344. NoUserShellGad    cmp.w    #GD_ExpWindows,d7        ; Exploding windows ?
  2345.         bne.s    NoExpWindowsGad
  2346.         bchg    #0,ExpWindows(a4)
  2347.         bra    SetWindowsGads
  2348.  
  2349. NoExpWindowsGad    cmp.w    #GD_MouseCtr,d7            ; Explode to mouse ?
  2350.         bne.s    NoMouseCtrGad
  2351.         tst.b    ExpWindows(a4)
  2352.         beq.s    .End
  2353.         bchg    #0,MouseCenter(a4)
  2354.         move.b    MouseCenter(a4),d0
  2355.         move.l    #GD_MouseCtr,d1
  2356.         bra    SetMiscBox
  2357. .End        rts
  2358.  
  2359. NoMouseCtrGad    cmp.w    #GD_ExpFrames,d7        ; Explode frames ?
  2360.         bne.s    NoExpFramesGad
  2361.         tst.l    d5
  2362.         blt.s    .Key
  2363.         ext.l    d5
  2364.         move.l    d5,ExpFrames(a4)
  2365.         rts
  2366. .Key        lea    ExpFrames(a4),a0
  2367.         move.l    #GD_ExpFrames,d7
  2368. SetFrameGad    tst.b    ExpWindows(a4)
  2369.         beq.s    .End
  2370.         move.l    (a0),d0
  2371.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  2372.         beq.s    .Up
  2373.         subq.l    #1,d0
  2374.         cmp.l    #MINFRAMES,d0
  2375.         bge.s    .NoRestart
  2376.         move.l    #MAXFRAMES,d0
  2377.         bra.s    .NoRestart
  2378. .Up        addq.l    #1,d0                ; Increase value
  2379.         cmp.l    #MAXFRAMES,d0            ; Over 48 ?
  2380.         ble.s    .NoRestart
  2381.         moveq    #MINFRAMES,d0            ; Restart from scratch
  2382. .NoRestart    move.l    d0,(a0)                ; Remake slider gad
  2383.         move.l    d0,d1
  2384.         move.l    d7,d0
  2385.         bsr    SetMiscSlids
  2386. .End        rts
  2387.  
  2388. NoExpFramesGad    cmp.w    #GD_ImpFrames,d7        ; Implode frames ?
  2389.         bne.s    NoImpFramesGad
  2390.         tst.l    d5
  2391.         blt.s    .Key
  2392.         ext.l    d5
  2393.         move.l    d5,ImpFrames(a4)
  2394.         rts
  2395. .Key        lea    ImpFrames(a4),a0
  2396.         move.l    #GD_ImpFrames,d7
  2397.         bra    SetFrameGad
  2398.  
  2399. NoImpFramesGad    cmp.w    #GD_SizeFrames,d7        ; Size frames ?
  2400.         bne.s    NoSizeFramesGad
  2401.         tst.l    d5
  2402.         blt.s    .Key
  2403.         ext.l    d5
  2404.         move.l    d5,SizeFrames(a4)
  2405.         rts
  2406. .Key        lea    SizeFrames(a4),a0
  2407.         move.l    #GD_SizeFrames,d7
  2408.         bra    SetFrameGad
  2409.  
  2410. NoSizeFramesGad    cmp.w    #GD_MoveFrames,d7        ; Move frames ???
  2411.         bne.s    NoMoveFramesGad
  2412.         tst.l    d5
  2413.         blt.s    .Key
  2414.         ext.l    d5
  2415.         move.l    d5,MoveFrames(a4)
  2416.         rts
  2417. .Key        lea    MoveFrames(a4),a0
  2418.         move.l    #GD_MoveFrames,d7
  2419.         bra    SetFrameGad
  2420.  
  2421. NoMoveFramesGad    cmp.w    #GD_FullDrag,d7            ; Full dragging ?
  2422.         bne.s    NoFullDragGad
  2423.         bchg    #0,FullDrag(a4)
  2424.         move.b    FullDrag(a4),d0
  2425.         move.l    #GD_FullDrag,d1
  2426.         bra    SetMiscBox
  2427.  
  2428. NoFullDragGad    cmp.w    #GD_DragQual,d7            ; New Dragging qualifier ?
  2429.         bne.s    NoDragQualGad
  2430.         tst.l    d5
  2431.         bge.s    .NoKey
  2432.         move.l    d7,d0
  2433.         lea    MiscGads(a4),a0
  2434.         move.l    MiscHandle(a4),a5
  2435.         bsr    ButtonCheck
  2436. .NoKey        move.w    #IECODE_LBUTTON,NewCode(a4)
  2437.         move.w    FullDragQual(a4),NewQual(a4)
  2438.         move.b    #1,KeepCode(a4)            ; Code may not be changed
  2439.         LOCLEA    DragQualTxt,a0
  2440.         bsr    GetQualifier
  2441.         tst.w    NewCode(a4)
  2442.         beq.s    .End
  2443.         move.w    NewQual(a4),FullDragQual(a4)
  2444.         bra    SetMiscGads
  2445. .End        rts
  2446.  
  2447. NoDragQualGad    cmp.w    #GD_AltMode,d7            ; Enable/Disable AltMode ?
  2448.         bne.s    NoAltModeGad
  2449.         bchg    #0,AltModeOn(a4)
  2450.         move.b    AltModeOn(a4),d0
  2451.         move.l    #GD_AltMode,d1
  2452.         bra    SetMiscBox
  2453.  
  2454. NoAltModeGad    cmp.w    #GD_AltQual,d7            ; Change qualifier for AltMode ?
  2455.         bne.s    NoAltQualGad
  2456.         bchg    #0,AltQual(a4)
  2457.         move.w    AltQual(a4),d1
  2458.         move.l    #GD_AltQual,d0
  2459.         lea    MiscGads(a4),a0
  2460.         move.l    MiscHandle(a4),a1
  2461.         RELLIB    SetCycleGad,_KCXBase
  2462. NoAltQualGad    rts
  2463. NoMiscGadUp    rts
  2464.  
  2465.  
  2466.  
  2467. **********************************************************************
  2468. *                      Handle the alarm window                       *
  2469. **********************************************************************
  2470. HandleAlarmWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  2471.         beq    CloseAlarmWin
  2472.  
  2473.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  2474.         bne.s    NoAlarmMove
  2475.         move.l    AlarmHandle(a4),a0
  2476.         lea    AlarmWinLeft(a4),a1
  2477.         bra    StoreWinPos
  2478.  
  2479. NoAlarmMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget released ?
  2480.         bne    NoAlarmGadUp
  2481.  
  2482.         cmp.w    #GD_AlarmOn,d7            ; Alarm ?
  2483.         bne.s    NoAlarmOnGad
  2484. AlarmOnKey    bchg    #0,DoAlarm(a4)
  2485.         move.b    DoAlarm(a4),d0
  2486.         move.l    #GD_AlarmOn,d1
  2487.         bra    SetAlarmBox
  2488.  
  2489. NoAlarmOnGad    cmp.w    #GD_AllHours,d7            ; Alarm every hour ?
  2490.         bne.s    NoAllHoursGad
  2491.         bchg    #0,EveryHour(a4)
  2492.         move.b    EveryHour(a4),d0
  2493.         move.l    #GD_AllHours,d1
  2494.         bra    SetAlarmBox
  2495.  
  2496. NoAllHoursGad    cmp.w    #GD_ShowAlarm,d7        ; Display requester ?
  2497.         bne.s    NoShowAlarmGad
  2498. ShowAlarmKey    bchg    #0,DoShowAlarm(a4)
  2499.         move.b    DoShowAlarm(a4),d0
  2500.         move.l    #GD_ShowAlarm,d1
  2501.         bra    SetAlarmBox
  2502.  
  2503. NoShowAlarmGad    cmp.w    #GD_AlarmTime,d7        ; New alarm time ?
  2504.         bne.s    NoAlarmTimeGad
  2505.         tst.l    d5
  2506.         blt.s    .Key
  2507.         ext.l    d5
  2508.         move.l    d5,AlarmTime(a4)
  2509.         rts
  2510. .Key        move.l    AlarmTime(a4),d0
  2511.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  2512.         beq.s    .Up
  2513.         subq.l    #1,d0
  2514.         bge.s    .GoOn
  2515.         move.l    #(24*60)-1,d0
  2516.         bra.s    .GoOn
  2517. .Up        addq.l    #1,d0
  2518.         cmp.l    #(24*60),d0
  2519.         bne.s    .GoOn
  2520.         moveq    #0,d0
  2521. .GoOn        move.l    d0,AlarmTime(a4)
  2522.         move.l    d0,d1
  2523.         move.l    #GD_AlarmTime,d0
  2524.         lea    AlarmGads(a4),a0
  2525.         move.l    AlarmHandle(a4),a1
  2526.         RELLIB    SetSliderGad,_KCXBase
  2527.         rts
  2528.  
  2529. NoAlarmTimeGad    cmp.w    #GD_AlSoundType,d7        ; New sound type ?
  2530.         bne.s    NoAlSTypeGad
  2531.         tst.l    d5
  2532.         bgt.s    .NoKey
  2533.         bchg    #0,AlarmSample(a4)
  2534.         move.l    #GD_AlSoundType,d0
  2535.         moveq    #0,d1
  2536.         move.b    AlarmSample(a4),d1
  2537.         lea    AlarmGads(a4),a0
  2538.         move.l    AlarmHandle(a4),a1
  2539.         RELLIB    SetCycleGad,_KCXBase
  2540.         bra.s    .SetSampleGad
  2541. .NoKey        move.b    d5,AlarmSample(a4)
  2542. .SetSampleGad    move.l    #GD_AlarmSample,d0
  2543.         moveq    #0,d1
  2544.         move.b    AlarmSample(a4),d1
  2545.         bchg    #0,d1
  2546.         lea    AlarmGads(a4),a0
  2547.         move.l    AlarmHandle(a4),a1
  2548.         RELLIB    GhostGadget,_KCXBase
  2549.         move.l    #GD_TestSample,d0
  2550.         DOLIB    GhostGadget
  2551. GotNewAlarm    move.l    BackPort(a4),a0
  2552.         move.l    PrefsPort(a4),a1
  2553.         move.l    #COM_NEWALARM,d0
  2554.         RELLIB    ComPut,_KCXBase
  2555.         rts
  2556.  
  2557. NoAlSTypeGad    cmp.w    #GD_AlarmSample,d7        ; Load new Sample ?
  2558.         bne.s    NoAlSampleGad
  2559.         tst.l    d5
  2560.         bge.s    .NoKey
  2561.         move.l    d7,d0
  2562.         lea    AlarmGads(a4),a0
  2563.         move.l    AlarmHandle(a4),a5
  2564.         bsr    ButtonCheck
  2565. .NoKey        pea    _LVOSetTextGad
  2566.         clr.l    -(sp)
  2567.         lea    AlarmGads(a4),a0
  2568.         move.l    a0,-(sp)
  2569.         move.w    #GD_SampleName,-(sp)
  2570.         lea    AlSampleName(a4),a0
  2571.         move.l    a0,-(sp)
  2572.         LOCLEA    AlSampLoadHead,d0
  2573.         move.l    d0,-(sp)
  2574.         move.l    AlarmHandle(a4),-(sp)
  2575.         bsr    GetFileName
  2576.         lea    26(sp),sp
  2577.         tst.l    d0
  2578.         beq.s    .End
  2579.         ST    HadASample(a4)
  2580.         bra.s    GotNewAlarm
  2581. .End        rts
  2582.  
  2583. NoAlSampleGad    cmp.w    #GD_TestSample,d7        ; Test alarm sample ?
  2584.         bne.s    NoTestSmpGad
  2585.         tst.l    d5
  2586.         bge.s    .NoKey
  2587.         move.l    d7,d0
  2588.         lea    AlarmGads(a4),a0
  2589.         move.l    AlarmHandle(a4),a5
  2590.         bsr    ButtonCheck
  2591. .NoKey        bsr    BusyAllWins
  2592.         move.l    BackPort(a4),a0
  2593.         move.l    PrefsPort(a4),a1
  2594.         move.l    #COM_PLAYALARM,d0
  2595.         RELLIB    ComPut,_KCXBase
  2596.         bsr    UnbusyAllWins
  2597. NoTestSmpGad    rts
  2598. NoAlarmGadUp    rts
  2599.  
  2600.  
  2601.  
  2602.  
  2603.  
  2604.  
  2605. **********************************************************************
  2606. *                       Handle the cyle window                       *
  2607. **********************************************************************
  2608. HandleCycleWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  2609.         beq    CloseCycleWin
  2610.  
  2611.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  2612.         bne.s    NoCycleMove
  2613.         move.l    CycleHandle(a4),a0
  2614.         lea    CycleWinLeft(a4),a1
  2615.         bra    StoreWinPos
  2616.  
  2617. NoCycleMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget used ?
  2618.         bne    NoCycleGadUp
  2619.  
  2620.         cmp.w    #GD_CycleOn,d7            ; Cycling ?
  2621.         bne.s    NoCycleOnGad
  2622.         bchg    #0,CycleWin(a4)
  2623.         move.b    CycleWin(a4),d0
  2624.         move.l    #GD_CycleOn,d1
  2625.         lea    CycleGads(a4),a0
  2626.         move.l    CycleHandle(a4),a1
  2627.         RELLIB    SetCheckBox,_KCXBase
  2628.         moveq    #0,d1
  2629.         move.b    CycleWin(a4),d1
  2630.         eor.w    #1,d1
  2631.         move.l    #GD_FrontClick,d0
  2632.         DOLIB    GhostGadget
  2633.         move.l    #GD_BackClick,d0
  2634.         DOLIB    GhostGadget
  2635.         move.l    #GD_MiddleClick,d0
  2636.         DOLIB    GhostGadget
  2637.         rts
  2638.  
  2639. NoCycleOnGad    cmp.w    #GD_FrontClick,d7        ; New Frontclick ?
  2640.         bne.s    NoFrontClickGad
  2641.         tst.l    d5
  2642.         blt.s    .Key
  2643.         move.w    d5,FrontClicks(a4)
  2644.         rts
  2645. .Key        lea    FrontClicks(a4),a0
  2646. SetClickSlid    tst.b    CycleWin(a4)
  2647.         bne.s    .GoOn
  2648.         rts
  2649. .GoOn        move.w    (a0),d0
  2650.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  2651.         beq.s    .Up
  2652.         subq.w    #1,d0
  2653.         bne.s    .NoRestart
  2654.         move.w    #MAXCLICKS,d0
  2655.         bra.s    .NoRestart
  2656. .Up        addq.w    #1,d0
  2657.         cmp.w    #MAXCLICKS,d0
  2658.         ble.s    .NoRestart
  2659.         moveq    #1,d0
  2660. .NoRestart    move.w    d0,(a0)
  2661.         bra    SetCycleSlids
  2662.  
  2663. NoFrontClickGad    cmp.w    #GD_MiddleClick,d7        ; middle click ?
  2664.         bne.s    NoMidClickGad
  2665.         tst.l    d5
  2666.         blt.s    .Key
  2667.         move.w    d5,MiddleClicks(a4)
  2668.         rts
  2669. .Key        lea    MiddleClicks(a4),a0
  2670.         bra.s    SetClickSlid
  2671.  
  2672. NoMidClickGad    cmp.w    #GD_BackClick,d7        ; back click ?
  2673.         bne.s    NoBackClickGad
  2674.         tst.l    d5
  2675.         blt.s    .Key
  2676.         move.w    d5,BackClicks(a4)
  2677.         rts
  2678. .Key        lea    BackClicks(a4),a0
  2679.         bra.s    SetClickSlid
  2680.  
  2681. NoBackClickGad    cmp.w    #GD_FrontKey,d7            ; Change front qualifier ?
  2682.         bne.s    NoFrontQual
  2683.         tst.l    d5
  2684.         bge.s    .NoKey
  2685.         move.l    d7,d0
  2686.         lea    CycleGads(a4),a0
  2687.         move.l    CycleHandle(a4),a5
  2688.         bsr    ButtonCheck
  2689. .NoKey        move.w    FrontCode(a4),NewCode(a4)
  2690.         move.w    FrontQual(a4),NewQual(a4)
  2691.         clr.b    KeepCode(a4)            ; Code may be changed too
  2692.         LOCLEA    FrontClickTxt,a0
  2693.         bsr    GetQualifier
  2694.         tst.w    NewCode(a4)
  2695.         beq.s    .End
  2696.         move.w    NewCode(a4),FrontCode(a4)
  2697.         move.w    NewQual(a4),FrontQual(a4)
  2698.         bsr    SetCycleQuals
  2699. .End        rts
  2700.  
  2701. NoFrontQual    cmp.w    #GD_BackKey,d7            ; Change back qualifier ?
  2702.         bne.s    NoBackQual
  2703.         tst.l    d5
  2704.         bge.s    .NoKey
  2705.         move.l    d7,d0
  2706.         lea    CycleGads(a4),a0
  2707.         move.l    CycleHandle(a4),a5
  2708.         bsr    ButtonCheck
  2709. .NoKey        move.w    BackCode(a4),NewCode(a4)
  2710.         move.w    BackQual(a4),NewQual(a4)
  2711.         clr.b    KeepCode(a4)            ; Code may be changed too
  2712.         LOCLEA    BackClickTxt,a0
  2713.         bsr    GetQualifier
  2714.         tst.w    NewCode(a4)
  2715.         beq.s    .End
  2716.         move.w    NewCode(a4),BackCode(a4)
  2717.         move.w    NewQual(a4),BackQual(a4)
  2718.         bsr    SetCycleQuals
  2719. .End        rts
  2720.  
  2721. NoBackQual    cmp.w    #GD_MiddleKey,d7        ; Change middle qualifier ?
  2722.         bne.s    NoMiddleQual
  2723.         tst.l    d5
  2724.         bge.s    .NoKey
  2725.         move.l    d7,d0
  2726.         lea    CycleGads(a4),a0
  2727.         move.l    CycleHandle(a4),a5
  2728.         bsr    ButtonCheck
  2729. .NoKey        move.w    #IECODE_MBUTTON,NewCode(a4)
  2730.         move.w    MiddleQual(a4),NewQual(a4)
  2731.         move.b    #1,KeepCode(a4)            ; Code should be kept
  2732.         LOCLEA    MiddleClickTxt,a0
  2733.         bsr    GetQualifier
  2734.         tst.w    NewCode(a4)
  2735.         beq.s    NoMiddleQual
  2736.         move.w    NewQual(a4),MiddleQual(a4)
  2737.         bsr    SetCycleQuals
  2738. NoMiddleQual    rts
  2739. NoCycleGadUp    rts
  2740.  
  2741.  
  2742. **********************************************************************
  2743. *                     Handle the blanking window                     *
  2744. **********************************************************************
  2745. HandleBlankWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  2746.         beq    CloseBlankWin
  2747.  
  2748.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  2749.         bne.s    NoBlankMove
  2750.         move.l    BlankHandle(a4),a0
  2751.         lea    BlankWinLeft(a4),a1
  2752.         bra    StoreWinPos
  2753.  
  2754. NoBlankMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget picked ?
  2755.         bne    NoBlankGadUp
  2756.  
  2757.         cmp.w    #GD_BlankMouse,d7        ; Blank mouse ?
  2758.         bne.s    NoBlankMouseGad
  2759.         bchg    #0,MouseEver(a4)
  2760.         move.b    MouseEver(a4),d0
  2761.         move.l    #GD_BlankMouse,d1
  2762.         lea    BlankGads(a4),a0
  2763.         move.l    BlankHandle(a4),a1
  2764.         RELLIB    SetCheckBox,_KCXBase
  2765.         rts
  2766.  
  2767. NoBlankMouseGad    cmp.w    #GD_ScrTime,d7            ; New screen time ?
  2768.         bne.s    NoScrTimeGad
  2769.         tst.l    d5
  2770.         blt.s    .Key
  2771.         ext.l    d5
  2772.         move.l    d5,ScreenTime(a4)
  2773.         move.b    #1,TimeReset(a4)
  2774.         rts
  2775. .Key        lea    ScreenTime(a4),a0
  2776.         move.l    #GD_ScrTime,d7
  2777. SetTimeOut    move.l    (a0),d0
  2778.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  2779.         beq.s    .Up
  2780.         subq.l    #1,d0
  2781.         bge.s    .GoOn
  2782.         move.l    #(30*60),d0
  2783.         bra.s    .GoOn
  2784. .Up        addq.l    #1,d0
  2785.         cmp.l    #(30*60),d0
  2786.         ble.s    .GoOn
  2787.         moveq    #0,d0
  2788. .GoOn        move.l    d0,(a0)
  2789.         move.l    d0,d1
  2790.         move.l    d7,d0
  2791.         bsr    SetBlankSlid
  2792.         move.b    #1,TimeReset(a4)
  2793.         rts
  2794.  
  2795. NoScrTimeGad    cmp.w    #GD_MouseTime,d7        ; new mouse time ?
  2796.         bne.s    NoMouseTimeGad
  2797.         tst.l    d5
  2798.         blt.s    .Key
  2799.         ext.l    d5
  2800.         move.l    d5,MouseTime(a4)
  2801.         move.b    #1,TimeReset(a4)
  2802.         rts
  2803. .Key        lea    MouseTime(a4),a0
  2804.         move.l    #GD_MouseTime,d7
  2805.         bra    SetTimeOut
  2806.  
  2807. NoMouseTimeGad    cmp.w    #GD_BlankType,d7        ; Change blank type ?
  2808.         bne.s    NoBlankTypeGad
  2809.         tst.l    d5
  2810.         blt.s    DoBlankTypeKey
  2811.         move.b    d5,ScreenDimm(a4)
  2812. BlankTypeKey    move.l    #GD_DimmFac,d0
  2813.         moveq    #0,d1
  2814.         move.b    ScreenDimm(a4),d1
  2815.         bchg    #0,d1
  2816.         lea    BlankGads(a4),a0
  2817.         move.l    BlankHandle(a4),a1
  2818.         RELLIB    GhostGadget,_KCXBase
  2819.         rts
  2820. DoBlankTypeKey    bchg    #0,ScreenDimm(a4)
  2821.         move.l    #GD_BlankType,d0
  2822.         moveq    #0,d1
  2823.         move.b    ScreenDimm(a4),d1
  2824.         lea    BlankGads(a4),a0
  2825.         move.l    BlankHandle(a4),a1
  2826.         RELLIB    SetCycleGad,_KCXBase
  2827.         bra    BlankTypeKey
  2828.  
  2829. NoBlankTypeGad    cmp.w    #GD_DimmFac,d7            ; New dimm factor ?
  2830.         bne.s    NoDimmFacGad
  2831.         tst.l    d5
  2832.         blt.s    .Key
  2833.         ext.l    d5
  2834.         move.l    d5,DimmValue(a4)
  2835.         rts
  2836. .Key        tst.b    ScreenDimm(a4)
  2837.         beq.s    NoBlankGadUp
  2838.         move.l    DimmValue(a4),d0
  2839.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  2840.         beq.s    .Up
  2841.         subq.l    #1,d0
  2842.         bne.s    .GoOn
  2843.         moveq    #48,d0
  2844.         bra.s    .GoOn
  2845. .Up        addq.l    #1,d0
  2846.         cmp.l    #48,d0
  2847.         ble.s    .GoOn
  2848.         moveq    #1,d0
  2849. .GoOn        move.l    d0,DimmValue(a4)
  2850.         move.l    d0,d1
  2851.         move.l    #GD_DimmFac,d0
  2852.         bra    SetBlankSlid
  2853. NoDimmFacGad
  2854. NoBlankGadUp    rts
  2855.  
  2856.  
  2857.  
  2858. **********************************************************************
  2859. *                       Handle ClockDef window                       *
  2860. **********************************************************************
  2861. HandleClockDefWin
  2862.         cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  2863.         beq    CloseClockDefWin
  2864.  
  2865.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  2866.         bne.s    NoClockDefMove
  2867.         move.l    ClockDefHandle(a4),a0
  2868.         lea    ClockDefWinLeft(a4),a1
  2869.         bra    StoreWinPos
  2870.  
  2871. NoClockDefMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget picked ?
  2872.         bne    NoClockDefGadUp
  2873.  
  2874.         cmp.w    #GD_Display,d7            ; Clock on/off ?
  2875.         bne.s    NoDisplayGad
  2876.         bsr    ClearTitleBar            ; Clear titlebar
  2877.         bchg    #0,ShowClock(a4)
  2878.         move.b    ShowClock(a4),d0        ; reflect new choice
  2879.         move.l    #GD_Display,d1
  2880.         bsr    SetClockDefBox
  2881.         bsr    CloseClockWin            ; Close clock window
  2882.         bra    SigTime
  2883.  
  2884. NoDisplayGad    cmp.w    #GD_DisplayWin,d7        ; Display in window ?
  2885.         bne.s    NoDisplayWinGad
  2886.         bsr    ClearTitleBar
  2887.         bchg    #0,ClockWin(a4)
  2888.         move.b    ClockWin(a4),d0
  2889.         move.l    #GD_DisplayWin,d1
  2890.         bsr    SetClockDefBox
  2891.         bra    SigTime
  2892.  
  2893. NoDisplayWinGad    cmp.w    #GD_ShowTime,d7            ; Display time ?
  2894.         bne.s    NoShowTimeGad
  2895.         bsr    ClearTitleBar
  2896.         bchg    #0,DoShowTime(a4)
  2897.         move.b    DoShowTime(a4),d0
  2898.         move.l    #GD_ShowTime,d1
  2899.         bsr    SetClockDefBox
  2900.         bra    SigTime
  2901.  
  2902. NoShowTimeGad    cmp.w    #GD_ShowSecs,d7            ; Display seconds ?
  2903.         bne.s    NoShowSecsGad
  2904.         bsr    ClearTitleBar
  2905.         bchg    #0,ShowSecs(a4)
  2906.         move.b    ShowSecs(a4),d0
  2907.         move.l    #GD_ShowSecs,d1
  2908.         bsr    SetClockDefBox
  2909.         bra    SigTime
  2910.  
  2911. NoShowSecsGad    cmp.w    #GD_ShowDate,d7            ; Show date ?
  2912.         bne.s    NoShowDateGad
  2913.         bsr    ClearTitleBar
  2914.         bchg    #0,ShowDate(a4)
  2915.         move.b    ShowDate(a4),d0
  2916.         move.l    #GD_ShowDate,d1
  2917.         bsr    SetClockDefBox
  2918.         bra    SigTime
  2919.  
  2920. NoShowDateGad    cmp.w    #GD_ShowDay,d7            ; Show day ?
  2921.         bne.s    NoShowDayGad
  2922.         bsr    ClearTitleBar
  2923.         bchg    #0,ShowDay(a4)
  2924.         move.b    ShowDay(a4),d0
  2925.         move.l    #GD_ShowDay,d1
  2926.         bsr    SetClockDefBox
  2927.         bra    SigTime
  2928.  
  2929. NoShowDayGad    cmp.w    #GD_ShortDay,d7            ; Short day ?
  2930.         bne.s    NoShortDayGad
  2931.         bsr    ClearTitleBar
  2932.         bchg    #0,ShortDay(a4)
  2933.         move.b    ShortDay(a4),d0
  2934.         move.l    #GD_ShortDay,d1
  2935.         bsr    SetClockDefBox
  2936.         bra    SigTime
  2937.  
  2938. NoShortDayGad    cmp.w    #GD_ShowMouse,d7        ; Show mouse positions ?
  2939.         bne.s    NoShowMouseGad
  2940.         bsr    ClearTitleBar
  2941.         bchg    #0,ShowMouse(a4)
  2942.         bsr    SigTime
  2943.         move.b    ShowMouse(a4),d0
  2944.         move.l    #GD_ShowMouse,d1
  2945.         bra    SetClockDefBox
  2946.  
  2947. NoShowMouseGad    cmp.w    #GD_DateFormat,d7        ; Changed format of date ?
  2948.         bne.s    NoDateFormatGad
  2949.         tst.l    d5
  2950.         bge.s    .NoKey
  2951.         move.w    DateFormat(a4),d0
  2952.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  2953.         beq.s    .Up
  2954.         subq.w    #1,d0
  2955.         bge.s    .GoOn
  2956.         moveq    #5,d0
  2957.         bra.s    .GoOn
  2958. .Up        addq.w    #1,d0
  2959.         cmp.w    #5,d0
  2960.         ble.s    .GoOn
  2961.         moveq    #0,d0
  2962. .GoOn        move.w    d0,DateFormat(a4)
  2963.         move.w    d0,d1
  2964.         move.l    #GD_DateFormat,d0
  2965.         lea    ClockDefGads(a4),a0
  2966.         move.l    ClockDefHandle(a4),a1
  2967.         RELLIB    SetCycleGad,_KCXBase
  2968.         bsr    ClearTitleBar
  2969.         bra    SigTime
  2970. .NoKey        move.w    d5,DateFormat(a4)
  2971.         bsr    ClearTitleBar
  2972.         bra    SigTime
  2973.  
  2974. NoDateFormatGad    cmp.w    #GD_TFrontPen,d7        ; New text front pen ?
  2975.         bne.s    NoTFrontPenGad
  2976.         tst.l    d5
  2977.         blt.s    TFrontKey
  2978.         ext.l    d5
  2979.         move.l    d5,TextFrontPen(a4)
  2980. RemakeBCols    bsr    ClearTitleBar
  2981.         bra    SigTime
  2982. TFrontKey    lea    TextFrontPen(a4),a0
  2983.         move.l    #GD_TFrontPen,d7
  2984. SetDisplayPen    moveq    #1,d1
  2985.         move.l    ScrDepth1+4,d2
  2986.         lsl.l    d2,d1
  2987.         subq.l    #1,d1
  2988.         move.l    (a0),d0
  2989.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  2990.         beq.s    .Up
  2991.         subq.l    #1,d0
  2992.         bge.s    .GoOn
  2993.         move.l    d1,d0
  2994.         bra.s    .GoOn
  2995. .Up        addq.l    #1,d0
  2996.         cmp.l    d1,d0
  2997.         ble.s    .GoOn
  2998.         moveq    #0,d0
  2999. .GoOn        move.l    d0,(a0)
  3000.         move.l    d0,d1
  3001.         move.l    d7,d0
  3002.         bsr    SetClockDefPal
  3003.         bsr    ClearTitleBar
  3004.         bra    SigTime
  3005.  
  3006. NoTFrontPenGad    cmp.w    #GD_TBackPen,d7            ; New text back pen ?
  3007.         bne.s    NoTBackPenGad
  3008.         tst.l    d5
  3009.         bge.s    .NoKey
  3010.         lea    TextBackPen(a4),a0
  3011.         move.l    #GD_TBackPen,d7
  3012.         bra.s    SetDisplayPen
  3013. .NoKey        ext.l    d5
  3014.         move.l    d5,TextBackPen(a4)
  3015.         bra.s    RemakeBCols
  3016.  
  3017. NoTBackPenGad    cmp.w    #GD_GFrontPen,d7        ; New gauge front pen ?
  3018.         bne.s    NoGFrontPenGad
  3019.         tst.l    d5
  3020.         bge.s    .NoKey
  3021.         lea    GaugeFrontPen(a4),a0
  3022.         move.l    #GD_GFrontPen,d7
  3023.         bra.s    SetDisplayPen
  3024. .NoKey        ext.l    d5
  3025.         move.l    d5,GaugeFrontPen(a4)
  3026.         bra    RemakeBCols
  3027.  
  3028. NoGFrontPenGad    cmp.w    #GD_GBackPen,d7            ; New gauge back pen ?
  3029.         bne.s    NoGBackPenGad
  3030.         tst.l    d5
  3031.         bge.s    .NoKey
  3032.         lea    GaugeBackPen(a4),a0
  3033.         move.l    #GD_GBackPen,d7
  3034.         bra    SetDisplayPen
  3035. .NoKey        ext.l    d5
  3036.         move.l    d5,GaugeBackPen(a4)
  3037.         bra    RemakeBCols
  3038.  
  3039. NoGBackPenGad    cmp.w    #GD_GaugeWidth,d7        ; Set new width for gauge ?
  3040.         bne.s    NoGaugeWidthGad
  3041.         move.l    d5,-(sp)
  3042.         bsr    ClearTitleBar
  3043.         move.l    (sp)+,d5
  3044.         tst.l    d5
  3045.         bge.s    .NoKey
  3046.         move.l    MaxBarLen(a4),d5
  3047.         and.w    #(IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT),d4
  3048.         beq.s    .Up
  3049.         cmp.l    #50,d5
  3050.         bgt.s    .Down
  3051.         move.l    #MAXBARLEN,d5
  3052.         bra.s    .NoKey
  3053. .Down        subq.l    #1,d5
  3054.         bra.s    .NoKey
  3055. .Up        cmp.l    #MAXBARLEN,d5
  3056.         blt.s    .DoUp
  3057.         move.l    #50,d5
  3058.         bra.s    .NoKey
  3059. .DoUp        addq.l    #1,d5
  3060. .NoKey        move.l    #GD_GaugeWidth,d0
  3061.         move.l    d5,d1
  3062.         lea    ClockDefGads(a4),a0
  3063.         move.l    ClockDefHandle(a4),a1
  3064.         RELLIB    SetSliderGad,_KCXBase
  3065.         CALLSYS    Forbid
  3066.         ext.l    d5
  3067.         move.l    d5,MaxBarLen(a4)
  3068.         CALLSYS    Permit
  3069.         bra    SigTime
  3070. NoGaugeWidthGad
  3071. NoClockDefGadUp    rts
  3072.  
  3073.  
  3074.  
  3075. **********************************************************************
  3076. *                        Handle mouse window                         *
  3077. **********************************************************************
  3078. HandleMouseWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  3079.         beq    CloseMouseWin
  3080.  
  3081.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  3082.         bne.s    NoMouseMove
  3083.         move.l    MouseHandle(a4),a0
  3084.         lea    MouseWinLeft(a4),a1
  3085.         bra    StoreWinPos
  3086.  
  3087. NoMouseMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget picked ?
  3088.         bne    NoMouseGadUp
  3089.  
  3090.         cmp.w    #GD_WindowAct,d7        ; Window activation
  3091.         bne.s    NoWindowActGad
  3092. WindowActKey    bchg    #0,DoActivate(a4)
  3093.         move.b    DoActivate(a4),d0
  3094.         move.l    #GD_WindowAct,d1
  3095.         bra    SetMouseBox
  3096.  
  3097. NoWindowActGad    cmp.w    #GD_SunMouse,d7            ; Sun mouse ?
  3098.         bne.s    NoSunMouseGad
  3099. SunMouseKey    bchg    #0,SunMouse(a4)
  3100.         move.b    SunMouse(a4),d0
  3101.         move.l    #GD_SunMouse,d1
  3102.         bra    SetMouseBox
  3103.  
  3104. NoSunMouseGad    cmp.w    #GD_MouseAccel,d7        ; Mouse acceleration ?
  3105.         bne.s    NoMouseAGad
  3106. MouseAKey    bchg    #0,MouseAccel(a4)
  3107.         move.b    MouseAccel(a4),d0
  3108.         move.l    #GD_MouseAccel,d1
  3109.         bsr    SetMouseBox
  3110.         bra    SetMouseGads
  3111.  
  3112. NoMouseAGad    cmp.w    #GD_Accelerate,d7        ; Acceleration ?
  3113.         bne.s    NoAccelGad
  3114.         tst.l    d5
  3115.         blt.s    .Key
  3116.         ext.l    d5
  3117.         move.l    d5,Accelerate(a4)
  3118.         rts
  3119. .Key        tst.b    MouseAccel(a4)
  3120.         beq.s    .End
  3121.         move.l    Accelerate(a4),d0
  3122.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  3123.         beq.s    .Up
  3124.         subq.l    #1,d0
  3125.         cmp.l    #MINACC,d0
  3126.         bge.s    .GoOn
  3127.         moveq    #MAXACC,d0
  3128.         bra.s    .GoOn
  3129. .Up        addq.l    #1,d0
  3130.         cmp.l    #MAXACC,d0
  3131.         ble.s    .GoOn
  3132.         move.l    #MINACC,d0
  3133. .GoOn        move.l    d0,Accelerate(a4)
  3134.         move.l    d0,d1
  3135.         move.l    #GD_Accelerate,d0
  3136.         lea    MouseGads(a4),a0
  3137.         move.l    MouseHandle(a4),a1
  3138.         RELLIB    SetSliderGad,_KCXBase
  3139. .End        rts
  3140.  
  3141. NoAccelGad    cmp.w    #GD_Threshold,d7        ; Threshold ?
  3142.         bne.s    NoThreshGad
  3143.         tst.l    d5
  3144.         blt.s    .Key
  3145.         ext.l    d5
  3146.         move.l    d5,ThresHold(a4)
  3147.         rts
  3148. .Key        tst.b    MouseAccel(a4)
  3149.         beq.s    .End
  3150.         move.l    ThresHold(a4),d0
  3151.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  3152.         beq.s    .Up
  3153.         subq.l    #1,d0
  3154.         cmp.l    #MINTHRES,d0
  3155.         bge.s    .GoOn
  3156.         moveq    #MAXTHRES,d0
  3157.         bra.s    .GoOn
  3158. .Up        addq.l    #1,d0
  3159.         cmp.l    #MAXTHRES,d0
  3160.         ble.s    .GoOn
  3161.         move.l    #MINTHRES,d0
  3162. .GoOn        move.l    d0,ThresHold(a4)
  3163.         move.l    d0,d1
  3164.         move.l    #GD_Threshold,d0
  3165.         lea    MouseGads(a4),a0
  3166.         move.l    MouseHandle(a4),a1
  3167.         RELLIB    SetSliderGad,_KCXBase
  3168. .End        rts
  3169.  
  3170. NoThreshGad    cmp.w    #GD_HoldXQual,d7        ; HoldX qualifier ?
  3171.         bne.s    NoHoldXGad
  3172.         tst.l    d5
  3173.         bge.s    .NoKey
  3174.         move.l    d7,d0
  3175.         lea    MouseGads(a4),a0
  3176.         move.l    MouseHandle(a4),a5
  3177.         bsr    ButtonCheck
  3178. .NoKey        move.w    #-1,NewCode(a4)
  3179.         move.w    HoldXQual(a4),NewQual(a4)
  3180.         move.b    #1,KeepCode(a4)            ; Code should be kept
  3181.         LOCLEA    HoldXQualTxt,a0
  3182.         bsr    GetQualifier
  3183.         tst.w    NewCode(a4)
  3184.         beq.s    .End
  3185.         move.w    NewQual(a4),HoldXQual(a4)
  3186.         bsr    SetMouseGads
  3187. .End        rts
  3188.  
  3189. NoHoldXGad    cmp.w    #GD_HoldYQual,d7        ; New HoldY qualifier ?
  3190.         bne.s    NoHoldYGad
  3191.         tst.l    d5
  3192.         bge.s    .NoKey
  3193.         move.l    d7,d0
  3194.         lea    MouseGads(a4),a0
  3195.         move.l    MouseHandle(a4),a5
  3196.         bsr    ButtonCheck
  3197. .NoKey        move.w    #-1,NewCode(a4)
  3198.         move.w    HoldYQual(a4),NewQual(a4)
  3199.         move.b    #1,KeepCode(a4)            ; Code should be kept
  3200.         LOCLEA    HoldYQualTxt,a0
  3201.         bsr    GetQualifier
  3202.         tst.w    NewCode(a4)
  3203.         beq.s    NoHoldYGad
  3204.         move.w    NewQual(a4),HoldYQual(a4)
  3205.         bra    SetMouseGads
  3206.  
  3207. NoHoldYGad    cmp.w    #GD_Lefty,d7            ; LeftyMouse ?
  3208.         bne.s    NoLeftyGad
  3209.         bchg    #0,LeftyMouse(a4)
  3210.         move.b    LeftyMouse(a4),d0
  3211.         move.l    #GD_Lefty,d1
  3212.         bra    SetMouseBox
  3213.  
  3214. NoLeftyGad    cmp.w    #GD_HoldMouse,d7        ; Hold Mouse ?
  3215.         bne.s    NoHoldGad
  3216.         bchg    #0,HoldMouse(a4)
  3217.         move.b    HoldMouse(a4),d0
  3218.         move.l    #GD_HoldMouse,d1
  3219.         bra    SetMouseBox
  3220.  
  3221. NoHoldGad    cmp.w    #GD_WinReAct,d7            ; Window Reactivation ?
  3222.         bne.s    NoWinReact
  3223.         bchg    #0,WindowReAct(a4)
  3224.         move.b    WindowReAct(a4),d0
  3225.         move.l    #GD_WinReAct,d1
  3226.         bra    SetMouseBox
  3227.  
  3228. NoWinReact    rts
  3229. NoMouseGadUp    rts
  3230.  
  3231.  
  3232.  
  3233.  
  3234. **********************************************************************
  3235. *                        Close HotKey window                         *
  3236. **********************************************************************
  3237. HandleHotKeyWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  3238.         beq    CloseHotKeyWin
  3239.  
  3240.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Move window ?
  3241.         bne.s    NoHotKeyMove
  3242.         move.l    HotKeyHandle(a4),a0
  3243.         lea    HotKeyWinLeft(a4),a1
  3244.         bra    StoreWinPos
  3245.  
  3246. NoHotKeyMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget picked ?
  3247.         bne    NoHotKeyGadUp
  3248.  
  3249.         cmp.w    #GD_HotKeyList,d7        ; New HotKey
  3250.         bne    NoHotKeyList
  3251.         tst.l    d5
  3252.         bge.s    .NoKey
  3253.         move.l    HotKeyChange(a4),d0
  3254.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  3255.         beq.s    .Up
  3256.         cmp.l    #-1,d0
  3257.         beq.s    .End
  3258.         tst.l    d0
  3259.         beq.s    .GoOn
  3260.         subq.l    #1,d0
  3261.         bra.s    .GoOn
  3262. .Up        cmp.l    #HOTKEYNUM-1,d0
  3263.         bge.s    .GoOn
  3264.         addq.l    #1,d0
  3265. .GoOn        move.l    d0,HotKeyChange(a4)
  3266.         move.l    d0,d1
  3267.         move.l    d0,d2
  3268.         move.l    #GD_HotKeyList,d0
  3269.         lea    HotKeyGads(a4),a0
  3270.         move.l    HotKeyHandle(a4),a1
  3271.         RELLIB    SetListViewGad,_KCXBase
  3272.         move.l    HotKeyChange(a4),d5
  3273. .NoKey        ext.l    d5                ; Get number of HotKey to change
  3274.         move.l    d5,HotKeyChange(a4)
  3275.  
  3276.         move.l    #GD_HotKeyDef,d0
  3277.         lea    HotKeyGads(a4),a0
  3278.         move.l    HotKeyHandle(a4),a1
  3279.         lea    HotKeyGadStat,a2        ; Copy HotKey definition to
  3280.         lsl.l    #2,d5                ; String-Gadget
  3281.         move.l    0(a2,d5),a2
  3282.         add.l    a4,a2
  3283.         RELLIB    SetStringGad,_KCXBase
  3284.  
  3285.         moveq    #GD_HotKeyDef,d0        ; Activate Stringgadget
  3286.         moveq    #0,d1
  3287.         lea    HotKeyGads(a4),a0
  3288.         move.l    HotKeyHandle(a4),a1
  3289.         RELLIB    GhostGadget,_KCXBase
  3290. .End        rts
  3291.  
  3292. NoHotKeyList    cmp.w    #GD_HotKeyDef,d7        ; Changed HotKey definition ?
  3293.         bne.s    NoHotKeyDefGad
  3294.         tst.l    d5
  3295.         bge.s    .NoKey
  3296.         tst.l    HotKeyChange(a4)
  3297.         blt.s    .End
  3298.         move.l    #GD_HotKeyDef,d0
  3299.         lea    HotKeyGads(a4),a0
  3300.         move.l    HotKeyHandle(a4),a1
  3301.         RELLIB    ActStringGad,_KCXBase
  3302. .End        rts
  3303. .NoKey        lea    HotKeyGadVars,a2        ; Get Vars for HotKey
  3304.         move.l    HotKeyChange(a4),d7
  3305.         mulu    #12,d7
  3306.         movem.l    0(a2,d7),d0-d2
  3307.         sub.l    a0,a0
  3308.         tst.l    d0
  3309.         beq.s    .NoWindow
  3310.         move.l    0(a4,d0),a0
  3311. .NoWindow    lea    0(a4,d1),a1
  3312.         move.l    0(a4,d2),a2
  3313.         lea    HotKeyGads(a4),a3        ; Get new definition for HotKey
  3314.         move.l    4(a3),a3
  3315.         move.l    gg_SpecialInfo(a3),a3
  3316.         move.l    si_Buffer(a3),a3
  3317.         lea    HotKeyGadStat,a5        ; Try to remake HotKey
  3318.         move.l    HotKeyChange(a4),d7
  3319.         lsl.l    #2,d7
  3320.         move.l    0(a5,d7),a5
  3321.         add.l    a4,a5
  3322.         bra    RemakeHotKey
  3323. NoHotKeyDefGad    rts
  3324. NoHotKeyGadUp    rts
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331. **********************************************************************
  3332. *                        Handle FKeys window                         *
  3333. **********************************************************************
  3334. HandleFKeyWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  3335.         beq    CloseFKeyWin
  3336.  
  3337.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  3338.         bne.s    NoFKeyMove
  3339.         move.l    FKeyHandle(a4),a0
  3340.         lea    FKeyWinLeft(a4),a1
  3341.         bra    StoreWinPos
  3342.  
  3343. NoFKeyMove    cmp.l    #IDCMP_ACTIVEWINDOW,d6        ; Window activated ?
  3344.         bne.s    NoFKeyAct
  3345.         move.l    #GD_F1,d0
  3346.         lea    FKeyGads(a4),a0
  3347.         move.l    FKeyHandle(a4),a1
  3348.         RELLIB    ActStringGad,_KCXBase
  3349.         rts
  3350.  
  3351. NoFKeyAct    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget picked ?
  3352.         bne    NoFKeyGadUp
  3353.  
  3354.         cmp.w    #GD_F10,d7            ; New F-Key ?
  3355.         bgt.s    NoNewFKey
  3356.         tst.l    d5
  3357.         bge.s    .NoKey
  3358.         move.l    d7,d0
  3359.         lea    FKeyGads(a4),a0
  3360.         move.l    FKeyHandle(a4),a1
  3361.         RELLIB    ActStringGad,_KCXBase
  3362. .End        rts
  3363. .NoKey        lea    FKeysNew(a4),a1
  3364.         move.l    FKeyQual(a4),d0
  3365.         mulu    #(MAXFKEYWIDTH+2)*10,d0
  3366.         lea    0(a1,d0),a1
  3367.         sub.w    #GD_F1,d7
  3368.         mulu    #(MAXFKEYWIDTH+2),d7
  3369.         lea    0(a1,d7.w),a1
  3370.         move.l    gg_SpecialInfo(a2),a0
  3371.         move.l    si_Buffer(a0),a0
  3372.         bra    StrCpy
  3373.  
  3374. NoNewFKey    cmp.w    #GD_FKeyQual,d7            ; Changed qualifier ?
  3375.         bne.s    NoNewFQual
  3376.         tst.l    d5
  3377.         bge.s    .NoKey
  3378.         move.l    FKeyQual(a4),d0
  3379.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  3380.         beq.s    .Up
  3381.         subq.l    #1,d0
  3382.         bge.s    .GoOn
  3383.         moveq    #3,d0
  3384.         bra.s    .GoOn
  3385. .Up        addq.l    #1,d0
  3386.         cmp.l    #4,d0
  3387.         blt.s    .GoOn
  3388.         moveq    #0,d0
  3389. .GoOn        move.l    d0,FKeyQual(a4)
  3390.         bra    SetFKeyGads
  3391. .NoKey        ext.l    d5
  3392.         move.l    d5,FKeyQual(a4)
  3393.         bra    SetFKeyGads
  3394.  
  3395. NoNewFQual    cmp.w    #GD_FKeyAct,d7            ; Activate stuff ?
  3396.         bne.s    NoFKeyOnGad
  3397.         bchg    #0,FKeysOn(a4)
  3398.         move.b    FKeysOn(a4),d0
  3399.         move.l    #GD_FKeyAct,d1
  3400.         lea    FKeyGads(a4),a0
  3401.         move.l    FKeyHandle(a4),a1
  3402.         RELLIB    SetCheckBox,_KCXBase
  3403.         rts
  3404.  
  3405. NoFKeyOnGad    cmp.w    #GD_FKeyOk,d7            ; Clicked OK ?
  3406.         bne.s    NoFKeyOkGad
  3407.         tst.l    d5
  3408.         bge.s    .NoKey
  3409.         move.l    d7,d0
  3410.         lea    FKeyGads(a4),a0
  3411.         move.l    FKeyHandle(a4),a5
  3412.         bsr    ButtonCheck
  3413. .NoKey        lea    FKeysNew(a4),a0
  3414.         lea    FKeys(a4),a1
  3415.         move.w    #((MAXFKEYWIDTH+2)*10*4)-1,d7
  3416. .Loop        move.b    (a0)+,(a1)+
  3417.         dbf    d7,.Loop
  3418.         bra    CloseFKeyWin
  3419.  
  3420. NoFKeyOkGad    cmp.w    #GD_FKeyCancel,d7        ; Clicked Cancel ?
  3421.         bne.s    NoFKeyGadUp
  3422.         tst.l    d5
  3423.         bge.s    .NoKey
  3424.         move.l    d7,d0
  3425.         lea    FKeyGads(a4),a0
  3426.         move.l    FKeyHandle(a4),a5
  3427.         bsr    ButtonCheck
  3428. .NoKey        bra    CloseFKeyWin
  3429. NoFKeyGadUp    rts
  3430.  
  3431.  
  3432.  
  3433.  
  3434. **********************************************************************
  3435. *                   Handle the Preferences window                    *
  3436. **********************************************************************
  3437. HandlePrefsWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  3438.         beq    ClosePrefsWin
  3439.  
  3440.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  3441.         bne.s    NoPrefsMove
  3442.         move.l    PrefsHandle(a4),a0
  3443.         lea    PrefsWinLeft(a4),a1
  3444.         bra    StoreWinPos
  3445.  
  3446. NoPrefsMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget picked ?
  3447.         bne    NoPrefsGadUp
  3448.  
  3449.         cmp.w    #GD_Normal1,d7            ; One of the cost gadgets ?
  3450.         blt.s    NoCostTimeGad
  3451.         cmp.w    #GD_Cheap3,d7
  3452.         bgt.s    NoCostTimeGad
  3453.         tst.l    d5
  3454.         bge.s    .NoKey
  3455.         move.l    d7,d0
  3456.         lea    PrefsGads(a4),a0
  3457.         move.l    PrefsHandle(a4),a1
  3458.         RELLIB    ActStringGad,_KCXBase
  3459.         rts
  3460. .NoKey        ext.l    d7                ; Calc offset to time
  3461.         move.l    d7,d6                ; Copy number of gadget
  3462.         move.l    d7,d0
  3463.         lsr.w    #1,d0                ; D0 = Offset to timezone
  3464.         move.l    d0,d1
  3465.         add.l    d1,d1
  3466.         sub.l    d1,d7                ; D7 = Offset to normal/cheap
  3467.         lea    CostUnit1(a4),a0
  3468.         lsl.l    #3,d0
  3469.         lsl.l    #2,d7
  3470.         lea    0(a0,d0),a0
  3471.         move.l    0(a0,d7),d1            ; Get old cost
  3472.         move.l    gg_SpecialInfo(a2),a3
  3473.         move.l    si_LongInt(a3),d0        ; Get new one
  3474.         tst.l    d0                ; Less zero or even equal ?
  3475.         blt.s    .Error
  3476.         move.l    d0,0(a0,d7)            ; Store new time
  3477.         bra.s    DoNewCosts
  3478. .Error        move.l    d6,d0
  3479.         bsr    SetPrefsInteger
  3480. DoNewCosts    move.b    #1,DoRemakeCosts(a4)
  3481.         move.l    BackPort(a4),a0
  3482.         move.l    PrefsPort(a4),a1
  3483.         move.l    #COM_REMAKECOSTS,d0
  3484.         RELLIB    ComPut,_KCXBase
  3485.         rts
  3486.  
  3487. NoCostTimeGad    cmp.w    #GD_CostUnit,d7            ; New cost/unit entered ?
  3488.         bne.s    NoCostGad
  3489.         tst.l    d5
  3490.         bge.s    .NoKey
  3491.         move.l    d7,d0
  3492.         lea    PrefsGads(a4),a0
  3493.         move.l    PrefsHandle(a4),a1
  3494.         RELLIB    ActStringGad,_KCXBase
  3495.         rts
  3496. .NoKey        move.l    gg_SpecialInfo(a2),a3
  3497.         move.l    si_LongInt(a3),d0        ; Get new value
  3498.         tst.l    d0                ; <= 0 ?
  3499.         ble.s    .Error
  3500.         move.l    d0,CostUnit(a4)            ; Store new value
  3501.         bra.s    .End
  3502. .Error        move.l    #GD_CostUnit,d0
  3503.         move.l    CostUnit(a4),d1
  3504.         bsr    SetPrefsInteger
  3505. .End        bra.s    DoNewCosts
  3506.  
  3507. NoCostGad    cmp.w    #GD_ClearLog,d7            ; Clear log file ?
  3508.         bne.s    NoClearGad
  3509.         tst.l    d5
  3510.         bge.s    .NoKey
  3511.         move.l    d7,d0
  3512.         lea    PrefsGads(a4),a0
  3513.         move.l    PrefsHandle(a4),a5
  3514.         bsr    ButtonCheck
  3515. .NoKey        lea    LogFileName(a4),a0
  3516.         move.l    a0,d1
  3517.         RELLIB    DeleteFile,_DOSBase
  3518.         rts
  3519.  
  3520. NoClearGad    cmp.w    #GD_PopUpBill,d7        ; Enable/Disable PopUp fo BillWin
  3521.         bne.s    NoPopBillGad
  3522.         bchg    #0,BillPopUp(a4)
  3523.         move.b    BillPopUp(a4),d0
  3524.         move.l    #GD_PopUpBill,d1
  3525.         bra    SetPrefsBox
  3526.  
  3527. NoPopBillGad    cmp.w    #GD_ActiveBill,d7        ; Active Bill window on popup ?
  3528.         bne.s    NoActBillGad
  3529.         bchg    #0,ActiveBill(a4)
  3530.         move.b    ActiveBill(a4),d0
  3531.         move.l    #GD_ActiveBill,d1
  3532.         bra    SetPrefsBox
  3533.  
  3534. NoActBillGad    cmp.w    #GD_OpenBill,d7            ; New public screen chosen ?
  3535.         bne.s    NoWinScrGad
  3536.         tst.l    d5
  3537.         bge.s    .NoKey
  3538.         move.l    d7,d0
  3539.         lea    PrefsGads(a4),a0
  3540.         move.l    PrefsHandle(a4),a1
  3541.         RELLIB    ActStringGad,_KCXBase
  3542.         rts
  3543. .NoKey        move.l    gg_SpecialInfo(a2),a0
  3544.         move.l    si_Buffer(a0),a0
  3545.         lea    PubScreenName(a4),a1
  3546.         move.l    #256,d7
  3547.         bra    StrNCpy
  3548.  
  3549. NoWinScrGad    cmp.w    #GD_SaveLog,d7            ; Select a file via ASL-Request ?
  3550.         bne.s    NoSaveToGad
  3551.         tst.l    d5
  3552.         bge.s    .NoKey
  3553.         move.l    d7,d0
  3554.         lea    PrefsGads(a4),a0
  3555.         move.l    PrefsHandle(a4),a5
  3556.         bsr    ButtonCheck
  3557. .NoKey        pea    _LVOSetStringGad
  3558.         clr.l    -(sp)
  3559.         pea    PrefsGads(a4)
  3560.         move.w    #GD_LogName,-(sp)
  3561.         lea    LogFileName(a4),a0
  3562.         move.l    a0,-(sp)
  3563.         LOCLEA    LogFileHeader,d0
  3564.         move.l    d0,-(sp)
  3565.         move.l    PrefsHandle(a4),-(sp)
  3566.         bsr    GetFileName
  3567.         lea    26(sp),sp
  3568.         rts
  3569.  
  3570. NoSaveToGad    cmp.w    #GD_LogName,d7            ; Entered new logfilename ?
  3571.         bne    NoLogFileGad
  3572.         tst.l    d5
  3573.         bge.s    .NoKey
  3574.         move.l    d7,d0
  3575.         lea    PrefsGads(a4),a0
  3576.         move.l    PrefsHandle(a4),a1
  3577.         RELLIB    ActStringGad,_KCXBase
  3578.         rts
  3579. .NoKey        link    a3,#-FILEBUFFSIZE        ; Get Buffer for FileName
  3580.         move.l    gg_SpecialInfo(a2),a5        ; Check if can be saved to dir
  3581.         move.l    si_Buffer(a5),a0
  3582.         lea    -FILEBUFFSIZE(a3),a1
  3583.         bsr    StrCpy                ; copy new filename
  3584.         lea    -FILEBUFFSIZE(a3),a0
  3585.         bsr    StrLen
  3586.         subq.l    #1,d0
  3587. .CheckLoop    cmp.b    #':',(a0)            ; Dir entered ?
  3588.         beq.s    .DoDirCheck
  3589.         cmp.b    #'/',(a0)
  3590.         beq.s    .DoDirCheck
  3591.         addq.l    #1,a0
  3592.         dbf    d0,.CheckLoop
  3593.         bra.s    .OnlyFile
  3594. .DoDirCheck    move.l    a0,a1                ; Yep...Extract dir name
  3595. .FindDir    tst.b    (a0)
  3596.         beq.s    .NameEnd
  3597.         cmp.b    #'/',(a0)
  3598.         bne.s    .Loop
  3599.         move.l    a0,a1
  3600. .Loop        addq.l    #1,a0
  3601.         bra.s    .FindDir
  3602. .NameEnd    clr.b    1(a1)                ; Dir name extracted
  3603.         lea    -FILEBUFFSIZE(a3),a0        ; try to lock it
  3604.         move.l    a0,d1
  3605.         move.l    #ACCESS_READ,d2
  3606.         RELLIB    Lock,_DOSBase
  3607.         tst.l    d0
  3608.         bne.s    .Ok
  3609.         DOLIB    IoErr                ; Error
  3610.         move.l    d0,ErrorPrefs(a4)
  3611.         bsr    DisplayError
  3612.         bra.s    .Error
  3613. .Ok        move.l    d0,d1                ; No Error
  3614.         DOLIB    UnLock
  3615. .OnlyFile    move.l    si_Buffer(a5),a0        ; Copy new filename
  3616.         lea    LogFileName(a4),a1
  3617.         bsr    StrCpy
  3618. .Error        move.l    #GD_LogName,d0
  3619.         lea    PrefsGads(a4),a0
  3620.         move.l    PrefsHandle(a4),a1
  3621.         lea    LogFileName(a4),a2
  3622.         RELLIB    SetStringGad,_KCXBase
  3623.         unlk    a3                ; Clear buffer
  3624.         rts
  3625.  
  3626. NoLogFileGad    cmp.w    #GD_TotalSum,d7            ; Display total sum ?
  3627.         bne.s    NoSumGad
  3628.         tst.l    d5
  3629.         bge.s    .NoKey
  3630.         move.l    d7,d0
  3631.         lea    PrefsGads(a4),a0
  3632.         move.l    PrefsHandle(a4),a5
  3633.         bsr    ButtonCheck
  3634. .NoKey        bra    DisplayTotalSum
  3635.  
  3636. NoSumGad    cmp.w    #GD_StartCheap,d7        ; New Starttime ?
  3637.         bne.s    NoCheapStartGad
  3638.         tst.l    d5
  3639.         blt.s    .Key
  3640.         ext.l    d5
  3641.         move.l    d5,CheapStart(a4)
  3642.         bra    DoNewCosts
  3643. .Key        lea    CheapStart(a4),a0
  3644.         move.l    #GD_StartCheap,d7
  3645. SetTimeGad    move.l    (a0),d0
  3646.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  3647.         beq.s    .Up
  3648.         subq.l    #1,d0
  3649.         bge.s    .NoRestart
  3650.         move.l    #143,d0
  3651.         bra.s    .NoRestart
  3652. .Up        addq.l    #1,d0
  3653.         cmp.l    #144,d0
  3654.         blt.s    .NoRestart
  3655.         moveq    #0,d0
  3656. .NoRestart    move.l    d0,(a0)
  3657.         move.l    d0,d1
  3658.         move.l    d7,d0
  3659.         lea    PrefsGads(a4),a0
  3660.         move.l    PrefsHandle(a4),a1
  3661.         RELLIB    SetSliderGad,_KCXBase
  3662.         bra    DoNewCosts
  3663.  
  3664. NoCheapStartGad    cmp.w    #GD_StartNorm,d7        ; New Endtime ?
  3665.         bne.s    NoStartNormGad
  3666.         tst.l    d5
  3667.         blt.s    .Key
  3668.         ext.l    d5
  3669.         move.l    d5,CheapStop(a4)
  3670.         bra    DoNewCosts
  3671. .Key        lea    CheapStop(a4),a0
  3672.         move.l    #GD_StartNorm,d7
  3673.         bra    SetTimeGad
  3674.  
  3675. NoStartNormGad    cmp.w    #GD_Sunday,d7            ; Day changed ?
  3676.         blt.s    .End
  3677.         cmp.w    #GD_Saturday,d7
  3678.         bgt.s    .End
  3679.         sub.w    #GD_Sunday,d7
  3680.         lea    Sunday(a4),a0
  3681.         bchg    #0,0(a0,d7)
  3682.         move.b    0(a0,d7),d0
  3683.         add.w    #GD_Sunday,d7
  3684.         move.w    d7,d1
  3685.         bsr    SetPrefsBox
  3686.         bra    DoNewCosts
  3687. .End        rts
  3688. NoPrefsGadUp    rts
  3689.  
  3690.  
  3691.  
  3692. **********************************************************************
  3693. *                   Handle the Preferences window                    *
  3694. **********************************************************************
  3695. HandleLockWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  3696.         beq    CloseLockWin
  3697.  
  3698.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  3699.         bne.s    NoLockMove
  3700.         move.l    LockHandle(a4),a0
  3701.         lea    LockWinLeft(a4),a1
  3702.         bra    StoreWinPos
  3703.  
  3704. NoLockMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget released ?
  3705.         bne    NoLockGadUp
  3706.  
  3707.         cmp.w    #GD_WindowList,d7        ; Selected an entry ?
  3708.         bne    NoWindowListGad
  3709.         tst.l    d5
  3710.         bge.s    .NoKey
  3711.         tst.w    NumLockEntries(a4)
  3712.         beq.s    .End
  3713.         move.w    SelWindow(a4),d0
  3714.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  3715.         beq.s    .Up
  3716.         tst.w    d0
  3717.         blt.s    .End
  3718.         beq.s    .GoOn
  3719.         subq.w    #1,d0
  3720.         bra.s    .GoOn
  3721. .Up        addq.w    #1,d0
  3722.         cmp.w    NumLockEntries(a4),d0
  3723.         blt.s    .GoOn
  3724.         move.w    NumLockEntries(a4),d0
  3725.         subq.w    #1,d0
  3726. .GoOn        move.w    d0,SelWindow(a4)
  3727.         move.l    #GD_WindowList,d0
  3728.         move.w    SelWindow(a4),d1
  3729.         move.w    d1,d2
  3730.         lea    LockGads(a4),a0
  3731.         move.l    LockHandle(a4),a1
  3732.         RELLIB    SetListViewGad,_KCXBase
  3733.         moveq    #0,d1
  3734.         move.l    #GD_WindowName,d0
  3735.         DOLIB    GhostGadget
  3736.         move.l    #GD_DeleteWindow,d0
  3737.         DOLIB    GhostGadget
  3738.         tst.l    BackTask(a4)
  3739.         beq.s    .End
  3740.         move.l    #GD_SelectWindow,d0
  3741.         DOLIB    GhostGadget
  3742. .End        rts
  3743. .NoKey        move.w    d5,SelWindow(a4)
  3744.         move.l    #GD_WindowName,d0
  3745.         moveq    #0,d1
  3746.         lea    LockGads(a4),a0
  3747.         move.l    LockHandle(a4),a1
  3748.         RELLIB    GhostGadget,_KCXBase
  3749.         move.l    #GD_DeleteWindow,d0
  3750.         DOLIB    GhostGadget
  3751.         tst.b    LockListType(a4)
  3752.         bne.s    .SelectOk
  3753.         tst.l    BackTask(a4)
  3754.         beq.s    .NoSelect
  3755. .SelectOk    move.l    #GD_SelectWindow,d0
  3756.         DOLIB    GhostGadget
  3757. .NoSelect    rts
  3758.  
  3759. NoWindowListGad    cmp.w    #GD_WindowName,d7        ; Changed name for window ?
  3760.         bne.s    NoWindowNameGad
  3761.         tst.l    d5
  3762.         bge.s    .NoKey
  3763.         tst.w    SelWindow(a4)
  3764.         blt.s    .EndKey
  3765.         move.l    #GD_WindowName,d0
  3766.         lea    LockGads(a4),a0
  3767.         move.l    LockHandle(a4),a1
  3768.         RELLIB    ActStringGad,_KCXBase
  3769. .EndKey        rts
  3770. .NoKey        move.w    SelWindow(a4),d0
  3771.         bsr    GetEntry
  3772.         move.l    a1,d0
  3773.         beq.s    .End
  3774.         move.l    gg_SpecialInfo(a2),a0
  3775.         move.l    si_Buffer(a0),a0
  3776.         lea    lw_Name(a1),a1
  3777.         moveq    #79,d7
  3778.         bsr    StrNCpy
  3779.         move.l    LockHandle(a4),a0
  3780.         RELLIB    GT_RefreshWindow,_GadToolsBase
  3781. .End        rts
  3782.  
  3783. NoWindowNameGad    cmp.w    #GD_AddWindow,d7        ; New entry ?
  3784.         bne    NoAddWinGad
  3785.         tst.l    d5
  3786.         bge.s    .NoKey
  3787.         move.l    d7,d0
  3788.         lea    LockGads(a4),a0
  3789.         move.l    LockHandle(a4),a5
  3790.         bsr    ButtonCheck
  3791. .NoKey        move.l    #lw_SIZEOF,d0
  3792.         move.l    #MEMF_CLEAR,d1
  3793.         CALLSYS    AllocVec
  3794.         tst.l    d0
  3795.         beq    .Error
  3796.         move.l    d0,-(sp)
  3797.         move.l    #GD_WindowList,d0
  3798.         lea    LockGads(a4),a0
  3799.         move.l    LockHandle(a4),a1
  3800.         move.l    #~0,a2
  3801.         RELLIB    SetListViewLst,_KCXBase
  3802.         move.l    (sp)+,d0
  3803.         tst.b    LockListType(a4)
  3804.         beq.s    .Add2Wins
  3805.         lea    TaskWinBase(a4),a0        ; Add to list of tasks
  3806.         bra.s    .DoAdd
  3807. .Add2Wins    lea    WindowBase(a4),a0        ; Add entry to tail of list
  3808. .DoAdd        move.l    d0,a1
  3809.         move.l    d0,a2
  3810.         ADDTAIL
  3811.         addq.w    #1,NumLockEntries(a4)
  3812.         move.w    NumLockEntries(a4),d0
  3813.         subq.w    #1,d0
  3814.         move.w    d0,SelWindow(a4)
  3815.         LOCLEA    UnusedStr,a0
  3816.         lea    lw_Name(a2),a1
  3817.         move.l    a1,a3
  3818.         move.l    a1,LN_NAME(a2)
  3819.         moveq    #79,d7
  3820.         bsr    StrNCpy
  3821.         move.l    #GD_WindowList,d0
  3822.         lea    LockGads(a4),a0
  3823.         move.l    LockHandle(a4),a1
  3824.         tst.b    LockListType(a4)        ; Which list to show ???
  3825.         beq.s    .ShowWins
  3826.         lea    TaskWinBase(a4),a2
  3827.         bra.s    .DoShow
  3828. .ShowWins    lea    WindowBase(a4),a2
  3829. .DoShow        RELLIB    SetListViewLst,_KCXBase
  3830.         move.w    SelWindow(a4),d1
  3831.         move.w    d1,d2
  3832.         DOLIB    SetListViewGad
  3833.         move.l    #GD_WindowName,d0
  3834.         moveq    #0,d1
  3835.         DOLIB    GhostGadget
  3836.         move.l    a3,a2
  3837.         DOLIB    SetStringGad
  3838.         move.l    #GD_DeleteWindow,d0
  3839.         DOLIB    GhostGadget
  3840.         tst.b    LockListType(a4)
  3841.         bne.s    .SelectOk
  3842.         tst.l    BackTask(a4)
  3843.         beq.s    .NoSelect
  3844. .SelectOk    move.l    #GD_SelectWindow,d0
  3845.         DOLIB    GhostGadget
  3846. .NoSelect    move.l    #GD_WindowName,d0
  3847.         DOLIB    ActStringGad
  3848.         move.l    LockHandle(a4),a0
  3849.         sub.l    a1,a1
  3850.         RELLIB    GT_RefreshWindow,_GadToolsBase
  3851.         move.w    NumLockEntries(a4),d0
  3852.         tst.b    LockListType(a4)
  3853.         beq.s    .ActWins
  3854.         move.w    d0,NumTaskWins(a4)
  3855.         rts
  3856. .ActWins    move.w    d0,NumWindows(a4)
  3857.         rts
  3858. .Error        move.l    #MEMORY_ERR,ErrorPrefs(a4)
  3859.         bsr    DisplayError
  3860.         rts
  3861.  
  3862. NoAddWinGad    cmp.w    #GD_SelectWindow,d7        ; Select a new window now ?
  3863.         bne    NoSelectWinGad
  3864.         tst.w    SelWindow(a4)
  3865.         bge.s    .DoSelect
  3866.         rts
  3867. .DoSelect    tst.l    d5
  3868.         bge.s    .NoKey
  3869.         move.l    d7,d0
  3870.         lea    LockGads(a4),a0
  3871.         move.l    LockHandle(a4),a5
  3872.         bsr    ButtonCheck
  3873. .NoKey        bsr    BusyAllWins
  3874.         tst.b    LockListType(a4)
  3875.         beq.s    .GetWindow
  3876.         move.l    #GD_WindowList,d0        ; Reset list
  3877.         lea    LockGads(a4),a0
  3878.         move.l    LockHandle(a4),a1
  3879.         move.l    #~0,a2
  3880.         RELLIB    SetListViewLst,_KCXBase
  3881.         move.w    SelWindow(a4),d0        ; Get address of selected entry
  3882.         bsr    GetEntry
  3883.         pea    lw_Name
  3884.         move.l    a1,-(sp)
  3885.         bsr    SelectTaskName
  3886.         addq.l    #8,sp
  3887.         bsr    UnbusyAllWins            ; Unbusy windows
  3888.         move.l    #GD_WindowList,d0        ; Reset list
  3889.         lea    LockGads(a4),a0
  3890.         move.l    LockHandle(a4),a1
  3891.         lea    TaskWinBase(a4),a2
  3892.         RELLIB    SetListViewLst,_KCXBase
  3893.         move.w    SelWindow(a4),d0        ; Reget address of entry
  3894.         bsr    GetEntry
  3895.         move.l    a1,a2                ; Set String gadget
  3896.         move.l    #GD_WindowName,d0
  3897.         lea    LockGads(a4),a0
  3898.         move.l    LockHandle(a4),a1
  3899.         lea    lw_Name(a2),a2
  3900.         DOLIB    SetStringGad
  3901.         move.l    LockHandle(a4),a0        ; Refresh window
  3902.         sub.l    a1,a1
  3903.         RELLIB    GT_RefreshWindow,_GadToolsBase
  3904.         rts
  3905. .GetWindow    move.l    LockHandle(a4),a0
  3906.         LOCLEA    SelectWinTxt,a1
  3907.         move.l    #-1,a2
  3908.         RELLIB    SetWindowTitles,_IntuitionBase
  3909.         ST    GetNewWindow(a4)
  3910.         move.l    #SIGLBUTTON,d0
  3911.         CALLSYS    Wait
  3912.         SF    GetNewWindow(a4)
  3913.         move.l    LockHandle(a4),a0
  3914.         LOCLEA    LockTitle,a1
  3915.         move.l    #-1,a2
  3916.         RELLIB    SetWindowTitles,_IntuitionBase
  3917.         CALLSYS    Forbid
  3918.         RELLIB    FindWindow,_KCXBase
  3919.         tst.l    d0
  3920.         beq.s    .End
  3921.         move.l    d0,a0
  3922.         move.l    lr_Window(a0),d0
  3923.         beq.s    .End
  3924.         move.l    d0,a3
  3925.         move.w    SelWindow(a4),d0
  3926.         bsr    GetEntry
  3927.         move.l    a1,d0
  3928.         beq.s    .End
  3929.         move.l    a1,a2
  3930.         lea    lw_Name(a1),a1
  3931.         move.l    wd_Title(a3),a0
  3932.         move.l    a0,d0
  3933.         beq.s    .Error
  3934.         moveq    #79,d7
  3935.         bsr    StrNCpy
  3936. .End        bsr    UnbusyAllWins
  3937.         CALLSYS    Permit
  3938.         move.l    #GD_WindowName,d0
  3939.         lea    LockGads(a4),a0
  3940.         move.l    LockHandle(a4),a1
  3941.         lea    lw_Name(a2),a2
  3942.         RELLIB    SetStringGad,_KCXBase
  3943.         move.l    LockHandle(a4),a0
  3944.         sub.l    a1,a1
  3945.         RELLIB    GT_RefreshWindow,_GadToolsBase
  3946.         rts
  3947. .Error        bsr    UnbusyAllWins
  3948.         CALLSYS    Permit
  3949.         move.l    #NOTITLE_ERR,ErrorPrefs(a4)
  3950.         bsr    DisplayError
  3951.         rts
  3952.  
  3953. NoSelectWinGad    cmp.w    #GD_DeleteWindow,d7        ; Delete an entry ?
  3954.         bne    NoDeleteWinGad
  3955.         tst.w    SelWindow(a4)
  3956.         bge.s    .DoDelete
  3957.         rts
  3958. .DoDelete    tst.l    d5
  3959.         bge.s    .NoKey
  3960.         move.l    d7,d0
  3961.         lea    LockGads(a4),a0
  3962.         move.l    LockHandle(a4),a5
  3963.         bsr    ButtonCheck
  3964. .NoKey        move.l    #GD_WindowList,d0
  3965.         lea    LockGads(a4),a0
  3966.         move.l    LockHandle(a4),a1
  3967.         move.l    #~0,a2
  3968.         RELLIB    SetListViewLst,_KCXBase
  3969.         move.w    SelWindow(a4),d0
  3970.         bsr    GetEntry
  3971.         move.l    a1,d0
  3972.         beq    .End
  3973.         move.l    a1,a2
  3974.         REMOVE
  3975.         move.l    a2,a1
  3976.         CALLSYS    FreeVec
  3977.         subq.w    #1,NumLockEntries(a4)
  3978.         move.w    NumLockEntries(a4),d0
  3979.         move.w    SelWindow(a4),d1
  3980.         cmp.w    d0,d1
  3981.         blt.s    .GoOn
  3982.         move.w    d0,d1
  3983.         subq.w    #1,d1
  3984. .GoOn        move.w    d1,SelWindow(a4)
  3985.         move.l    #GD_WindowList,d0
  3986.         move.w    SelWindow(a4),d1
  3987.         move.w    d1,d2
  3988.         bge.s    .NotLess
  3989.         moveq    #0,d2
  3990. .NotLess    lea    LockGads(a4),a0
  3991.         move.l    LockHandle(a4),a1
  3992.         tst.b    LockListType(a4)
  3993.         beq.s    .ShowWins
  3994.         lea    TaskWinBase(a4),a2
  3995.         bra.s    .DoShow
  3996. .ShowWins    lea    WindowBase(a4),a2
  3997. .DoShow        RELLIB    SetListViewLst,_KCXBase
  3998.         DOLIB    SetListViewGad
  3999. .Disable    tst.w    NumLockEntries(a4)
  4000.         bgt.s    .End
  4001.         moveq    #1,d1
  4002.         move.l    #GD_WindowName,d0
  4003.         RELLIB    GhostGadget,_KCXBase
  4004.         move.l    #GD_DeleteWindow,d0
  4005.         DOLIB    GhostGadget
  4006.         move.l    #GD_SelectWindow,d0
  4007.         DOLIB    GhostGadget
  4008. .End        move.l    LockHandle(a4),a0
  4009.         sub.l    a1,a1
  4010.         RELLIB    GT_RefreshWindow,_GadToolsBase
  4011.         move.w    NumLockEntries(a4),d0
  4012.         tst.b    LockListType(a4)
  4013.         beq.s    .ActWins
  4014.         move.w    d0,NumTaskWins(a4)
  4015.         rts
  4016. .ActWins    move.w    d0,NumWindows(a4)
  4017.         rts
  4018.  
  4019. NoDeleteWinGad    cmp.w    #GD_LockListType,d7        ; Change to other list ?
  4020.         bne    NoLockListGad
  4021.         bchg    #0,LockListType(a4)
  4022.         move.b    LockListType(a4),d0
  4023.         beq.s    .ShowWindows
  4024.         move.l    #GD_WindowList,d0
  4025.         lea    LockGads(a4),a0
  4026.         move.l    LockHandle(a4),a1
  4027.         move.l    #~0,a2
  4028.         RELLIB    SetListViewLst,_KCXBase
  4029.         lea    TaskWinBase(a4),a2
  4030.         DOLIB    SetListViewLst
  4031.         move.w    NumTaskWins(a4),d0
  4032.         bra.s    .End
  4033. .ShowWindows    move.l    #GD_WindowList,d0
  4034.         lea    LockGads(a4),a0
  4035.         move.l    LockHandle(a4),a1
  4036.         move.l    #~0,a2
  4037.         RELLIB    SetListViewLst,_KCXBase
  4038.         lea    WindowBase(a4),a2
  4039.         DOLIB    SetListViewLst
  4040.         move.w    NumWindows(a4),d0
  4041. .End        move.w    d0,NumLockEntries(a4)
  4042.         move.w    #~0,SelWindow(a4)
  4043.         move.l    #GD_WindowList,d0
  4044.         moveq    #0,d1
  4045.         move.w    SelWindow(a4),d1
  4046.         moveq    #0,d2
  4047.         DOLIB    SetListViewGad
  4048.         moveq    #1,d1
  4049.         move.l    #GD_SelectWindow,d0
  4050.         DOLIB    GhostGadget
  4051.         move.l    #GD_DeleteWindow,d0
  4052.         DOLIB    GhostGadget
  4053.         move.l    #GD_WindowName,d0
  4054.         DOLIB    GhostGadget
  4055.         move.l    #GD_LockListType,d0
  4056.         moveq    #0,d1
  4057.         move.b    LockListType(a4),d1
  4058.         lea    LockGads(a4),a0
  4059.         move.l    LockHandle(a4),a1
  4060.         RELLIB    SetCycleGad,_KCXBase
  4061.         move.l    a1,a0
  4062.         sub.l    a1,a1
  4063.         RELLIB    GT_RefreshWindow,_GadToolsBase
  4064. NoLockListGad
  4065. NoLockGadUp    rts
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071. **********************************************************************
  4072. *                   Handle the Preferences window                    *
  4073. **********************************************************************
  4074. HandleTagScrWin    cmp.l    #IDCMP_CLOSEWINDOW,d6        ; Close window ?
  4075.         beq    CloseTagScrWin
  4076.  
  4077.         cmp.l    #IDCMP_CHANGEWINDOW,d6        ; Window moved ?
  4078.         bne.s    NoTagScrMove
  4079.         move.l    TagScrHandle(a4),a0
  4080.         lea    TagScrWinLeft(a4),a1
  4081.         bra    StoreWinPos
  4082.  
  4083. NoTagScrMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget released ?
  4084.         bne    NoTagScrGadUp
  4085.  
  4086.         cmp.w    #GD_TagScreensOn,d7        ; Activate TagScreens ?
  4087.         bne.s    NoTagScrOnGad
  4088. TagScrOnKey    bchg    #0,TagScreens(a4)
  4089.         move.b    TagScreens(a4),d0
  4090.         move.l    #GD_TagScreensOn,d1
  4091.         bra    SetTagScrBox
  4092.  
  4093. NoTagScrOnGad    cmp.w    #GD_AddTagTsk,d7        ; Add new task to list ?
  4094.         bne    NoAddTagGad
  4095.         tst.l    d5
  4096.         bge.s    AddTagKey
  4097.         move.l    d7,d0
  4098.         lea    TagScrGads(a4),a0
  4099.         move.l    TagScrHandle(a4),a5
  4100.         bsr    ButtonCheck
  4101. AddTagKey    moveq    #0,d7
  4102. AddTagEntry    move.l    #tagscr_SIZEOF,d0
  4103.         move.l    #MEMF_CLEAR,d1
  4104.         CALLSYS    AllocVec
  4105.         tst.l    d0
  4106.         beq    AddTagError
  4107.         move.l    d0,a3
  4108.         move.l    #GD_TagTaskList,d0
  4109.         lea    TagScrGads(a4),a0
  4110.         move.l    TagScrHandle(a4),a1
  4111.         move.l    #~0,a2
  4112.         RELLIB    SetListViewLst,_KCXBase
  4113.         lea    TagScrsTasks(a4),a0
  4114.         move.l    a3,a1
  4115.         ADDTAIL
  4116.         tst.b    d7
  4117.         beq.s    .NormalEntry
  4118.         LOCLEA    GlobalTagName,a0
  4119.         move.l    a3,GlobalTagAdr(a4)
  4120.         bra.s    .CopyName
  4121. .NormalEntry    LOCLEA    UnusedStr,a0
  4122. .CopyName    lea    tagscr_Name(a3),a1
  4123.         move.l    a1,LN_NAME(a3)
  4124.         bsr    StrCpy
  4125.         move.b    d7,tagscr_Type(a3)        ; Set type of entry 0 = normal / 1 = global
  4126.         move.l    #DEFAULT_MONITOR_ID,tagscr_DisplayID(a3)
  4127.         addq.w    #1,TagScrNum(a4)
  4128.         move.w    TagScrNum(a4),d0
  4129.         subq.w    #1,d0
  4130.         move.w    d0,TagScrEntry(a4)
  4131.         moveq    #0,d1
  4132.         bsr    OffTagTaskGads
  4133.         link    a5,#-dim_SIZEOF
  4134.         sub.l    a0,a0
  4135.         lea    -dim_SIZEOF(a5),a1
  4136.         move.l    #dim_SIZEOF,d0
  4137.         move.l    #DTAG_DIMS,d1
  4138.         move.l    #DEFAULT_MONITOR_ID,d2
  4139.         RELLIB    GetDisplayInfoData,_GfxBase
  4140.         lea    -dim_SIZEOF+dim_TxtOScan(a5),a0
  4141.         moveq    #0,d0
  4142.         move.w    ra_MaxX(a0),d0
  4143.         addq.w    #1,d0
  4144.         move.l    d0,tagscr_Width(a3)
  4145.         move.w    ra_MaxY(a0),d0
  4146.         addq.w    #1,d0
  4147.         move.l    d0,tagscr_Height(a3)
  4148.         unlk    a5
  4149.         move.l    #GD_TagTaskList,d0
  4150.         lea    TagScrGads(a4),a0
  4151.         move.l    TagScrHandle(a4),a1
  4152.         lea    TagScrsTasks(a4),a2
  4153.         RELLIB    SetListViewLst,_KCXBase
  4154.         move.w    TagScrEntry(a4),d1
  4155.         move.w    d1,d2
  4156.         DOLIB    SetListViewGad
  4157.         bsr    SetTagEntryGads
  4158.         move.l    #GD_TagTaskName,d0
  4159.         lea    tagscr_Name(a3),a2
  4160.         DOLIB    SetStringGad
  4161.         tst.l    d7
  4162.         bne.s    .End
  4163.         DOLIB    ActStringGad
  4164. .End        rts
  4165. AddTagError    move.l    #MEMORY_ERR,ErrorPrefs(a4)
  4166.         bsr    DisplayError
  4167.         rts
  4168.  
  4169. NoAddTagGad    cmp.w    #GD_AddTagGlobal,d7        ; Add global tag ???
  4170.         bne.s    NoTagGlobalKey
  4171.         tst.l    GlobalTagAdr(a4)
  4172.         bne.s    .End
  4173.         tst.l    d5
  4174.         bge.s    .NoKey
  4175.         move.l    d7,d0
  4176.         lea    TagScrGads(a4),a0
  4177.         move.l    TagScrHandle(a4),a5
  4178.         bsr    ButtonCheck
  4179. .NoKey        moveq    #1,d7
  4180.         bra    AddTagEntry
  4181. .End        rts
  4182.  
  4183. NoTagGlobalKey    cmp.w    #GD_SelectTagTask,d7        ; Select new entry ???
  4184.         bne.s    NoTagSelGad
  4185.         move.w    TagScrEntry(a4),d0
  4186.         blt.s    .End
  4187.         bsr    GetTagScrEntry
  4188.         cmp.l    GlobalTagAdr(a4),a1
  4189.         beq.s    .End
  4190.         tst.l    d5
  4191.         bge.s    .NoKey
  4192.         move.l    d7,d0
  4193.         lea    TagScrGads(a4),a0
  4194.         move.l    TagScrHandle(a4),a5
  4195.         bsr    ButtonCheck
  4196. .NoKey        move.w    TagScrEntry(a4),d0
  4197.         bsr    GetTagScrEntry
  4198.         move.l    a1,d0
  4199.         beq.s    .End
  4200.         cmp.l    GlobalTagAdr(a4),a1
  4201.         beq.s    .End
  4202.         move.l    #GD_TagTaskList,d0
  4203.         lea    TagScrGads(a4),a0
  4204.         move.l    TagScrHandle(a4),a1
  4205.         move.l    #~0,a2
  4206.         RELLIB    SetListViewLst,_KCXBase
  4207.         pea    tagscr_Name
  4208.         move.w    TagScrEntry(a4),d0
  4209.         bsr    GetTagScrEntry
  4210.         move.l    a1,-(sp)
  4211.         bsr    SelectTaskName
  4212.         addq.l    #8,sp
  4213.         move.l    #GD_TagTaskList,d0
  4214.         lea    TagScrGads(a4),a0
  4215.         move.l    TagScrHandle(a4),a1
  4216.         lea    TagScrsTasks(a4),a2
  4217.         RELLIB    SetListViewLst,_KCXBase
  4218. .End        rts
  4219.  
  4220. NoTagSelGad    cmp.w    #GD_RemTagTsk,d7        ; Remove a task from the list ?
  4221.         bne    NoRemTagGad
  4222.         move.w    TagScrEntry(a4),d0
  4223.         blt    .End2
  4224.         tst.l    d5
  4225.         bge.s    .NoKey
  4226.         moveq    #0,d0
  4227.         move.l    d7,d0
  4228.         lea    TagScrGads(a4),a0
  4229.         move.l    TagScrHandle(a4),a5
  4230.         bsr    ButtonCheck
  4231. .NoKey        move.w    TagScrEntry(a4),d0
  4232.         bsr    GetTagScrEntry
  4233.         move.l    a1,d7
  4234.         beq    .End2
  4235.         move.l    #GD_TagTaskList,d0
  4236.         lea    TagScrGads(a4),a0
  4237.         move.l    TagScrHandle(a4),a1
  4238.         move.l    #~0,a2
  4239.         RELLIB    SetListViewLst,_KCXBase
  4240.         move.l    d7,a2
  4241.         cmp.l    GlobalTagAdr(a4),a2
  4242.         bne.s    .NotGlobal
  4243.         clr.l    GlobalTagAdr(a4)
  4244.         movem.l    a0/a1/a2,-(sp)
  4245.         move.l    #GD_AddTagGlobal,d0
  4246.         lea    TagScrGads(a4),a0
  4247.         move.l    TagScrHandle(a4),a1
  4248.         moveq    #0,d1
  4249.         RELLIB    GhostGadget,_KCXBase
  4250.         move.l    #GD_TagTaskName,d0
  4251.         DOLIB    GhostGadget
  4252.         move.l    #GD_SelectTagTask,d0
  4253.         DOLIB    GhostGadget
  4254.         movem.l    (sp)+,a0/a1/a2
  4255. .NotGlobal    move.l    a2,a1
  4256.         REMOVE
  4257.         move.l    a2,a1
  4258.         CALLSYS    FreeVec
  4259.         move.l    #GD_TagTaskList,d0
  4260.         lea    TagScrGads(a4),a0
  4261.         move.l    TagScrHandle(a4),a1
  4262.         lea    TagScrsTasks(a4),a2
  4263.         RELLIB    SetListViewLst,_KCXBase
  4264.         subq.w    #1,TagScrNum(a4)
  4265.         moveq    #0,d0
  4266.         moveq    #0,d1
  4267.         move.w    TagScrNum(a4),d0
  4268.         move.w    TagScrEntry(a4),d1
  4269.         cmp.w    d0,d1
  4270.         blt.s    .GoOn
  4271.         move.w    d0,d1
  4272.         subq.w    #1,d1
  4273. .GoOn        move.w    d1,TagScrEntry(a4)
  4274.         move.w    d1,d2
  4275.         move.l    #GD_TagTaskList,d0
  4276.         DOLIB    SetListViewGad
  4277.         tst.w    TagScrNum(a4)
  4278.         bgt.s    .End
  4279.         moveq    #1,d1
  4280.         bsr    OffTagTaskGads
  4281. .End        bsr    SetTagEntryGads
  4282.         move.w    TagScrEntry(a4),d0
  4283.         blt.s    .End2
  4284.         bsr    GetTagScrEntry
  4285.         move.l    a1,d0
  4286.         beq.s    .End2
  4287.         moveq    #0,d1
  4288.         cmp.l    GlobalTagAdr(a4),a1
  4289.         bne.s    .NoOff
  4290.         moveq    #1,d1
  4291. .NoOff        move.l    #GD_TagTaskName,d0
  4292.         lea    TagScrGads(a4),a0
  4293.         move.l    TagScrHandle(a4),a1
  4294.         RELLIB    GhostGadget,_KCXBase
  4295. .End2        rts
  4296.  
  4297. NoRemTagGad    cmp.w    #GD_TagTaskList,d7        ; Selected an entry ?
  4298.         bne    NoTagTaskList
  4299.         tst.l    d5
  4300.         blt.s    .Key
  4301.         move.w    d5,TagScrEntry(a4)
  4302.         moveq    #0,d1
  4303.         bsr    OffTagTaskGads
  4304.         bsr    SetTagEntryGads
  4305.         rts
  4306. .Key        tst.w    TagScrNum(a4)
  4307.         beq.s    .End
  4308.         move.w    TagScrEntry(a4),d0
  4309.         and.w    #IEQUALIFIER_LSHIFT|IEQUALIFIER_RSHIFT,d4
  4310.         beq.s    .Up
  4311.         cmp.w    #-1,d0
  4312.         beq.s    .End
  4313.         tst.w    d0
  4314.         beq.s    .GoOn
  4315.         subq.w    #1,d0
  4316.         bra.s    .GoOn
  4317. .Up        move.w    TagScrNum(a4),d1
  4318.         subq.w    #1,d1
  4319.         cmp.w    d1,d0
  4320.         bge.s    .GoOn
  4321.         addq.w    #1,d0
  4322. .GoOn        move.w    d0,TagScrEntry(a4)
  4323.         moveq    #0,d1
  4324.         bsr    OffTagTaskGads
  4325.         move.w    TagScrEntry(a4),d0
  4326.         bsr    GetTagScrEntry
  4327.         move.l    a1,a3
  4328.         move.l    #GD_TagTaskList,d0
  4329.         lea    TagScrGads(a4),a0
  4330.         move.l    TagScrHandle(a4),a1
  4331.         lea    TagScrsTasks(a4),a2
  4332.         RELLIB    SetListViewLst,_KCXBase
  4333.         move.w    TagScrEntry(a4),d1
  4334.         move.w    d1,d2
  4335.         DOLIB    SetListViewGad
  4336.         bsr    SetTagEntryGads
  4337.         move.l    #GD_TagTaskName,d0
  4338.         lea    tagscr_Name(a3),a2
  4339.         DOLIB    SetStringGad
  4340. .End        rts
  4341.  
  4342. NoTagTaskList    cmp.w    #GD_TagTaskName,d7        ; Changed name of task ?
  4343.         bne    NoTagTaskName
  4344.         tst.l    d5
  4345.         bge.s    .NoKey
  4346.         move.w    TagScrEntry(a4),d0
  4347.         blt.s    .EndKey
  4348.         bsr    GetTagScrEntry
  4349.         cmp.l    GlobalTagAdr(a4),a1
  4350.         beq.s    .EndKey
  4351.         move.l    d7,d0
  4352.         lea    TagScrGads(a4),a0
  4353.         move.l    TagScrHandle(a4),a1
  4354.         RELLIB    ActStringGad,_KCXBase
  4355. .EndKey        rts
  4356. .NoKey        move.w    TagScrEntry(a4),d0
  4357.         bsr    GetTagScrEntry
  4358.         move.l    a1,d0
  4359.         beq    .End
  4360.         move.l    gg_SpecialInfo(a2),a2
  4361.         move.l    si_Buffer(a2),a2
  4362.         movem.l    a0/a1,-(sp)
  4363.         LOCLEA    GlobalTagName,a0
  4364.         move.l    a2,a1
  4365.         bsr    StrCmp
  4366.         movem.l    (sp)+,a0/a1
  4367.         tst.b    d0
  4368.         beq.s    .RemakeOld
  4369.         tst.l    GlobalTagAdr(a4)
  4370.         beq.s    .GoOn
  4371.         tst.b    tagscr_Type(a1)
  4372.         beq.s    .GoOn
  4373. .RemakeOld    move.l    #GD_TagTaskName,d0
  4374.         lea    TagScrGads(a4),a0
  4375.         lea    tagscr_Name(a1),a2
  4376.         move.l    TagScrHandle(a4),a1
  4377.         RELLIB    SetStringGad,_KCXBase
  4378.         bra.s    .End
  4379. .GoOn        movem.l    a1/a2,-(sp)
  4380.         move.l    #GD_TagTaskList,d0
  4381.         lea    TagScrGads(a4),a0
  4382.         move.l    TagScrHandle(a4),a1
  4383.         move.l    #~0,a2
  4384.         RELLIB    SetListViewLst,_KCXBase
  4385.         movem.l    (sp)+,a1/a2
  4386.         move.l    a2,a0
  4387.         lea    tagscr_Name(a1),a1
  4388.         bsr    StrCpy
  4389.         move.l    #GD_TagTaskList,d0
  4390.         lea    TagScrGads(a4),a0
  4391.         move.l    TagScrHandle(a4),a1
  4392.         lea    TagScrsTasks(a4),a2
  4393.         RELLIB    SetListViewLst,_KCXBase
  4394. .End        rts
  4395.  
  4396. NoTagTaskName    cmp.w    #GD_TagNoMon,d7            ; Enable/Disable DisplayID ??
  4397.         bne.s    NoTskNoMonGad
  4398.         move.w    TagScrEntry(a4),d0
  4399.         blt.s    .End
  4400.         bsr    GetTagScrEntry
  4401.         tst.b    tagscr_LikeWB(a1)
  4402.         bne.s    .End
  4403.         move.w    #tagscr_Monitor,d7
  4404.         move.l    #GD_TagNoMon,d6
  4405.         bsr.s    SetTagTskBox
  4406.         moveq    #0,d1
  4407.         move.b    tagscr_Monitor(a3),d1
  4408.         bchg    #0,d1
  4409.         move.l    #GD_TagScrMode,d0
  4410.         lea    TagScrGads(a4),a0
  4411.         move.l    TagScrHandle(a4),a1
  4412.         RELLIB    GhostGadget,_KCXBase
  4413.         move.l    #GD_TagScrHeight,d0
  4414.         DOLIB    GhostGadget
  4415.         move.l    #GD_TagScrWidth,d0
  4416.         DOLIB    GhostGadget
  4417. .End        rts
  4418. SetTagTskBox    move.w    TagScrEntry(a4),d0
  4419.         bsr    GetTagScrEntry
  4420.         move.l    a1,d0
  4421.         beq.s    .End
  4422.         move.l    a1,a3
  4423.         bchg    #0,0(a1,d7)
  4424.         move.b    0(a1,d7),d0
  4425.         move.l    d6,d1
  4426.         bsr    SetTagScrBox
  4427. .End        rts
  4428.  
  4429. NoTskNoMonGad    cmp.w    #GD_TagHardPatch,d7        ; Check for HardPatch
  4430.         bne.s    NoTagHardGad
  4431.         move.w    #tagscr_HardPatch,d7
  4432.         move.l    #GD_TagHardPatch,d6
  4433.         bra    SetTagTskBox
  4434.  
  4435. NoTagHardGad    cmp.w    #GD_TagSAPens,d7        ; Check for SAPens
  4436.         bne.s    NoTagPensGad
  4437.         move.w    #tagscr_Pens,d7
  4438.         move.l    #GD_TagSAPens,d6
  4439.         bra    SetTagTskBox
  4440.  
  4441. NoTagPensGad    cmp.w    #GD_TagAutoScr,d7        ; Enable/Disable AutoScroll for Task ?
  4442.         bne.s    NoTskAutoScrGad
  4443.         move.w    #tagscr_AutoScroll,d7
  4444.         move.l    #GD_TagAutoScr,d6
  4445.         bra    SetTagTskBox
  4446.  
  4447. NoTskAutoScrGad    cmp.w    #GD_TagNoFnt,d7            ; Enable/Disable NoFont for Task ?
  4448.         bne.s    NoTskNoFontGad
  4449.         move.w    #tagscr_Font,d7
  4450.         move.l    #GD_TagNoFnt,d6
  4451.         bra    SetTagTskBox
  4452.  
  4453. NoTskNoFontGad    cmp.w    #GD_TagCenterScr,d7        ; AutoCenter ???
  4454.         bne.s    NoTskCenterGad
  4455.         move.w    #tagscr_CenterScr,d7
  4456.         move.l    #GD_TagCenterScr,d6
  4457.         bra    SetTagTskBox
  4458.  
  4459. NoTskCenterGad    cmp.w    #GD_TagInterleave,d7        ; Interleaved BitMaps ?
  4460.         bne.s    NoTskInterGad
  4461.         tst.b    OS3TagsOk(a4)
  4462.         beq.s    .End
  4463.         move.w    #tagscr_Interleave,d7
  4464.         move.l    #GD_TagInterleave,d6
  4465.         bra    SetTagTskBox
  4466. .End        rts
  4467.  
  4468. NoTskInterGad    cmp.w    #GD_TagLikeWB,d7        ; Like WB ?
  4469.         bne.s    NoTskWBGad
  4470.         tst.b    OS3TagsOk(a4)
  4471.         beq.s    .End
  4472.         move.w    #tagscr_LikeWB,d7
  4473.         move.l    #GD_TagLikeWB,d6
  4474.         bsr    SetTagTskBox
  4475.         bra    SetTagEntryGads
  4476. .End        rts
  4477.  
  4478. NoTskWBGad    cmp.w    #GD_TagBlackBorder,d7        ; BlackBorder ???
  4479.         bne.s    NoTskBorderGad
  4480.         tst.b    BlackBorderOk(a4)
  4481.         bne.s    .GoOn
  4482.         rts
  4483. .GoOn        move.w    #tagscr_BlackBorder,d7
  4484.         move.l    #GD_TagBlackBorder,d6
  4485.         bsr    SetTagTskBox
  4486.         move.w    TagScrEntry(a4),d0
  4487.         bsr    GetTagScrEntry
  4488.         cmp.l    GlobalTagAdr(a4),a1
  4489.         bne.s    .End
  4490.         move.l    BackPort(a4),d0
  4491.         beq.s    .End
  4492.         tst.b    TagScreens(a4)
  4493.         beq.s    .End
  4494.         move.l    d0,a0
  4495.         move.l    PrefsPort(a4),a1
  4496.         move.l    #COM_REBLACK,d0
  4497.         RELLIB    ComPut,_KCXBase
  4498. .End        rts
  4499.  
  4500. NoTskBorderGad    cmp.w    #GD_TagSystemPens,d7        ; Use SystemPens ???
  4501.         bne.s    NoTskSystemPens
  4502.         move.w    #tagscr_SystemPens,d7
  4503.         move.l    #GD_TagSystemPens,d6
  4504.         bra    SetTagTskBox
  4505.  
  4506. NoTskSystemPens    cmp.w    #GD_TagScrMode,d7        ; Change Screenmode ???
  4507.         bne    NoTskScrModeGad
  4508.         move.w    TagScrEntry(a4),d0
  4509.         blt    .End2
  4510.         bsr    GetTagScrEntry
  4511.         tst.b    tagscr_Monitor(a1)
  4512.         beq    .End2
  4513.         tst.b    tagscr_LikeWB(a1)
  4514.         bne    .End2
  4515.         tst.l    d5
  4516.         bge.s    .NoKey
  4517.         move.l    d7,d0
  4518.         lea    TagScrGads(a4),a0
  4519.         move.l    TagScrHandle(a4),a5
  4520.         bsr    ButtonCheck
  4521. .NoKey        link    a5,#-(4+dim_SIZEOF)
  4522.         clr.l    -4(a5)
  4523.         move.l    TagScrHandle(a4),ScrModeTags+4
  4524.         move.l    TagScrHandle(a4),rtScrModeTags+4
  4525.         move.w    TagScrEntry(a4),d0
  4526.         bsr    GetTagScrEntry
  4527.         move.l    a1,d0
  4528.         beq    .End2
  4529.         move.l    a1,a3
  4530.         move.l    tagscr_DisplayID(a1),OldTskScrMode+4
  4531.         move.l    _AslBase(a4),a0
  4532.         cmp.w    #38,LIB_VERSION(a0)
  4533.         bge    .UseAsl
  4534.         move.l    #RT_SCREENMODEREQ,d0
  4535.         sub.l    a0,a0
  4536.         RELLIB    rtAllocRequestA,_ReqToolsBase
  4537.         tst.l    d0
  4538.         beq.s    .rtEnd
  4539.         move.l    d0,-4(a5)
  4540.         move.l    d0,a1
  4541.         move.l    a3,-(sp)
  4542.         LOCLEA    ScrModeHead,a3
  4543.         lea    rtScrModeTags(pc),a0
  4544.         DOLIB    rtScreenModeRequestA
  4545.         move.l    (sp)+,a3
  4546.         tst.l    d0
  4547.         beq.s    .rtEnd
  4548.         move.l    -4(a5),a0
  4549.         move.l    rtsc_DisplayID(a0),tagscr_DisplayID(a3)
  4550.         move.l    rtsc_DisplayID(a0),d2
  4551.         sub.l    a0,a0
  4552.         lea    -(4+dim_SIZEOF)(a5),a1
  4553.         move.l    #dim_SIZEOF,d0
  4554.         move.l    #DTAG_DIMS,d1
  4555.         RELLIB    GetDisplayInfoData,_GfxBase
  4556.         lea    (-(4+dim_SIZEOF))+dim_TxtOScan(a5),a0
  4557.         moveq    #0,d0
  4558.         move.w    ra_MaxX(a0),d0
  4559.         addq.w    #1,d0
  4560.         move.l    d0,tagscr_Width(a3)
  4561.         move.w    ra_MaxY(a0),d0
  4562.         addq.w    #1,d0
  4563.         move.l    d0,tagscr_Height(a3)
  4564.         bsr    SetTagEntryGads
  4565. .rtEnd        tst.l    -4(a5)
  4566.         beq    .NoReq
  4567.         move.l    -4(a5),a1
  4568.         RELLIB    rtFreeRequest,_ReqToolsBase
  4569.         bra    .NoReq
  4570. .UseAsl        LOCLEA    ScrModeHead,a0
  4571.         move.l    a0,ScrModeTags+28
  4572.         move.l    #ASL_ScreenModeRequest,d0
  4573.         lea    ScrModeTags(pc),a0
  4574.         RELLIB    AllocAslRequest,_AslBase
  4575.         move.l    d0,-4(a5)
  4576.         tst.l    d0
  4577.         beq.s    .End
  4578.         move.l    d0,a0
  4579.         sub.l    a1,a1
  4580.         DOLIB    AslRequest
  4581.         tst.l    d0
  4582.         beq.s    .End
  4583.         move.l    -4(a5),a0
  4584.         move.l    sm_DisplayID(a0),tagscr_DisplayID(a3)
  4585.         move.l    sm_DisplayID(a0),d2
  4586.         sub.l    a0,a0
  4587.         lea    -(4+dim_SIZEOF)(a5),a1
  4588.         move.l    #dim_SIZEOF,d0
  4589.         move.l    #DTAG_DIMS,d1
  4590.         RELLIB    GetDisplayInfoData,_GfxBase
  4591.         lea    (-(4+dim_SIZEOF))+dim_TxtOScan(a5),a0
  4592.         moveq    #0,d0
  4593.         move.w    ra_MaxX(a0),d0
  4594.         addq.w    #1,d0
  4595.         move.l    d0,tagscr_Width(a3)
  4596.         move.w    ra_MaxY(a0),d0
  4597.         addq.w    #1,d0
  4598.         move.l    d0,tagscr_Height(a3)
  4599.         bsr    SetTagEntryGads
  4600. .End        tst.l    -4(a5)
  4601.         beq.s    .NoReq
  4602.         move.l    -4(a5),a0
  4603.         RELLIB    FreeAslRequest,_AslBase
  4604. .NoReq        unlk    a5
  4605. .End2        rts
  4606.  
  4607. NoTskScrModeGad    cmp.w    #GD_TagScrHeight,d7        ; Set new Screen Height for Task ?
  4608.         bne.s    NoTskScrHeight
  4609.         move.w    TagScrEntry(a4),d0
  4610.         bsr    GetTagScrEntry
  4611.         move.l    a1,d0
  4612.         beq.s    .End
  4613.         tst.b    tagscr_Monitor(a1)
  4614.         beq.s    .End
  4615.         tst.b    tagscr_LikeWB(a1)
  4616.         bne.s    .End
  4617.         tst.l    d5
  4618.         bge.s    .NoKey
  4619.         move.l    d7,d0
  4620.         lea    TagScrGads(a4),a0
  4621.         move.l    TagScrHandle(a4),a1
  4622.         RELLIB    ActStringGad,_KCXBase
  4623.         rts
  4624. .NoKey        move.l    gg_SpecialInfo(a2),a2
  4625.         move.l    si_LongInt(a2),tagscr_Height(a1)
  4626. .End        rts
  4627.  
  4628. NoTskScrHeight    cmp.w    #GD_TagScrWidth,d7        ; Set new Screen Width for Task ?
  4629.         bne.s    NoTskScrWidth
  4630.         move.w    TagScrEntry(a4),d0
  4631.         bsr    GetTagScrEntry
  4632.         move.l    a1,d0
  4633.         beq.s    .End
  4634.         tst.b    tagscr_Monitor(a1)
  4635.         beq.s    .End
  4636.         tst.b    tagscr_LikeWB(a1)
  4637.         bne.s    .End
  4638.         tst.l    d5
  4639.         bge.s    .NoKey
  4640.         move.l    d7,d0
  4641.         lea    TagScrGads(a4),a0
  4642.         move.l    TagScrHandle(a4),a1
  4643.         RELLIB    ActStringGad,_KCXBase
  4644.         rts
  4645. .NoKey        move.l    gg_SpecialInfo(a2),a2
  4646.         move.l    si_LongInt(a2),tagscr_Width(a1)
  4647. .End        rts
  4648. NoTskScrWidth    rts
  4649. NoTagScrGadUp    rts
  4650. ScrModeTags    dc.l    ASLSM_Window,0
  4651.         dc.l    ASLSM_PrivateIDCMP,1
  4652.         dc.l    ASLSM_Locale,0
  4653.         dc.l    ASLSM_TitleText,0
  4654. OldTskScrMode    dc.l    ASLSM_InitialDisplayID,0
  4655.         dc.l    TAG_DONE,0
  4656. rtScrModeTags    dc.l    RT_Window,0
  4657.         dc.l    RT_ShareIDCMP,0
  4658.         dc.l    RTSC_Flags,0
  4659.         dc.l    RT_Locale,0
  4660.         dc.l    TAG_DONE
  4661.  
  4662.  
  4663.  
  4664.  
  4665.  
  4666. **********************************************************************
  4667. *       Select a task name from the currently available tasks        *
  4668. *  On Stack a pointer to the entry to be changed and                 *
  4669. *  the offset to the name field                                      *
  4670. **********************************************************************
  4671. SelectTaskName    CALLSYS    Forbid
  4672.         lea    TaskListBase(a4),a0        ; Initialize Tasklist
  4673.         NEWLIST    a0
  4674.         move.l    $4.w,a0
  4675.         moveq    #0,d6
  4676.         lea    TaskReady(a0),a3        ; Get list of ready tasks
  4677.         bsr    .AddTasks
  4678.         move.l    $4.w,a0
  4679.         moveq    #0,d6
  4680.         lea    TaskWait(a0),a3            ; Get list of waiting tasks
  4681.         bsr    .AddTasks
  4682.         move.l    $4.w,a0
  4683.         moveq    #1,d6
  4684.         move.l    ThisTask(a0),a3            ; Add this task
  4685.         bsr    .AddTasks
  4686.         bsr    OpenTaskWin            ; Open the task-list window
  4687.         CALLSYS    Permit
  4688. .WaitTask    move.l    WindowPort(a4),a0        ; Wait for any messages on our port
  4689.         CALLSYS    WaitPort
  4690. .LoopTasks    move.l    WindowPort(a4),a0        ; Get Msg
  4691.         RELLIB    GT_GetIMsg,_GadToolsBase
  4692.         tst.l    d0
  4693.         beq.s    .WaitTask
  4694.         move.l    d0,a1
  4695.         move.l    im_Class(a1),d6
  4696.         move.w    im_Code(a1),d5
  4697.         move.l    im_IDCMPWindow(a1),d7
  4698.         DOLIB    GT_ReplyIMsg
  4699.         cmp.l    TaskHandle(a4),d7
  4700.         bne.s    .LoopTasks
  4701.         cmp.l    #IDCMP_CLOSEWINDOW,d6
  4702.         beq.s    .NoTask
  4703.         cmp.l    #IDCMP_CHANGEWINDOW,d6
  4704.         bne.s    .NoWindowMove
  4705.         move.l    TaskHandle(a4),a0
  4706.         lea    TaskWinLeft(a4),a1
  4707.         bsr    StoreWinPos
  4708.         bra.s    .LoopTasks
  4709. .NoWindowMove    cmp.l    #IDCMP_GADGETUP,d6
  4710.         bne    .LoopTasks
  4711.         lea    TaskListBase(a4),a0        ; Get head of list
  4712. .DoGet        SUCC    a0,a0
  4713.         sub.l    a1,a1
  4714.         tst.w    d5                ; Entry-Number < 0 ?
  4715.         blt.s    .Done
  4716. .Loop        move.l    a0,d0                ; Loop for address of entry
  4717.         beq.s    .Done
  4718.         tst.w    d5
  4719.         beq.s    .GotIt
  4720.         move.l    a0,d1
  4721.         beq.s    .Done
  4722.         SUCC    a0,a0
  4723.         subq.w    #1,d5
  4724.         bra.s    .Loop
  4725. .GotIt        move.l    a0,a1
  4726. .Done        move.l    a1,d0
  4727.         beq.s    .NoTask
  4728.         move.l    a1,a3                ; Store address of entry
  4729.         lea    lw_Name(a3),a0            ; Copy name of entry
  4730.         move.l    4(sp),a1
  4731.         move.l    8(sp),d0
  4732.         lea    0(a1,d0),a1
  4733.         bsr    StrCpy
  4734. .NoTask        bsr    CloseTaskWin
  4735.         lea    TaskListBase(a4),a0        ; Free list of tasks
  4736.         RELLIB    FreeWindows,_KCXBase
  4737.         rts
  4738. .AddTasks    tst.l    d6
  4739.         bne.s    .LoopReady
  4740.         TSTLIST    a3
  4741.         beq    .NoMoreReady
  4742.         move.l    LH_HEAD(a3),a3
  4743. .LoopReady    move.l    #lw_SIZEOF,d0
  4744.         move.l    #MEMF_CLEAR,d1
  4745.         CALLSYS    AllocVec
  4746.         tst.l    d0
  4747.         bne.s    .GoOnReady
  4748.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  4749.         bsr    DisplayError
  4750.         bra.s    .NoMoreReady
  4751. .GoOnReady    lea    TaskListBase(a4),a0
  4752.         move.l    d0,a2
  4753.         move.l    d0,a1
  4754.         ADDTAIL
  4755.         moveq    #-1,d7
  4756.         cmp.b    #NT_PROCESS,LN_TYPE(a3)
  4757.         bne.s    .IsTask
  4758.         tst.l    pr_TaskNum(a3)
  4759.         beq.s    .IsTask
  4760.         move.l    pr_CLI(a3),d0
  4761.         beq.s    .IsTask
  4762.         lsl.l    #2,d0
  4763.         move.l    d0,a0
  4764.         tst.l    cli_Module(a0)
  4765.         beq.s    .IsTask
  4766.         move.l    cli_CommandName(a0),d0
  4767.         lsl.l    #2,d0
  4768.         move.l    d0,a0
  4769.         moveq    #0,d7
  4770.         move.b    (a0)+,d7
  4771.         bra.s    .GoOnName
  4772. .IsTask        move.l    LN_NAME(a3),a0
  4773. .GoOnName    lea    lw_Name(a2),a1
  4774.         move.l    a1,LN_NAME(a2)
  4775.         bsr    StrNCpy
  4776.         tst.b    d6
  4777.         bne.s    .NoMoreReady
  4778.         move.l    LN_SUCC(a3),a3
  4779.         tst.l    (a3)
  4780.         beq.s    .NoMoreReady
  4781.         bra    .LoopReady
  4782. .NoMoreReady    rts
  4783.  
  4784.  
  4785.  
  4786.  
  4787. **********************************************************************
  4788. *               Give visual feedback for button press                *
  4789. * D0 = Number of gadget                                              *
  4790. * A0 = Pointer to first gadget                                       *
  4791. * A5 = Pointer to window                                             *
  4792. **********************************************************************
  4793. ButtonCheck    movem.l    RegsAll,-(sp)
  4794.         move.l    a5,d1
  4795.         beq    .End
  4796.         RELLIB    GetGadgetPtr,_KCXBase
  4797.         move.l    a0,a3
  4798.         move.l    a0,a1
  4799.         or.w    #GFLG_SELECTED,gg_Flags(a3)
  4800.         move.l    a3,a0
  4801.         move.l    a5,a1
  4802.         sub.l    a2,a2
  4803.         moveq    #1,d0
  4804.         RELLIB    RefreshGList,_IntuitionBase
  4805.         move.l    wd_IDCMPFlags(a5),d5
  4806.         move.l    a5,a0
  4807.         move.l    #IDCMP_RAWKEY,d0
  4808.         DOLIB    ModifyIDCMP
  4809. .WaitMsg    move.l    wd_UserPort(a5),a0
  4810.         CALLSYS    WaitPort
  4811. .LoopMsgs    move.l    wd_UserPort(a5),a0
  4812.         RELLIB    GT_GetIMsg,_GadToolsBase
  4813.         tst.l    d0
  4814.         beq.s    .WaitMsg
  4815.         move.l    d0,a1
  4816.         move.l    im_Class(a1),d6
  4817.         move.w    im_Code(a1),d7
  4818.         DOLIB    GT_ReplyIMsg
  4819.         cmp.l    #IDCMP_RAWKEY,d6
  4820.         bne.s    .LoopMsgs
  4821.         and.w    #IECODE_UP_PREFIX,d7
  4822.         beq.s    .LoopMsgs
  4823.         move.l    a5,a0
  4824.         move.l    d5,d0
  4825.         RELLIB    ModifyIDCMP,_IntuitionBase
  4826.         and.w    #~GFLG_SELECTED,gg_Flags(a3)
  4827.         move.l    a3,a0
  4828.         move.l    a5,a1
  4829.         sub.l    a2,a2
  4830.         moveq    #1,d0
  4831.         DOLIB    RefreshGList
  4832. .End        movem.l    (sp)+,RegsAll
  4833.         rts
  4834.  
  4835.  
  4836.  
  4837.  
  4838. **********************************************************************
  4839. *              Open our window. if not already open :-)              *
  4840. **********************************************************************
  4841. OpenMainWin    tst.l    MainHandle(a4)            ; Window already open ?
  4842.         beq.s    .End
  4843.         move.l    MainHandle(a4),a0
  4844.         RELLIB    WindowToFront,_IntuitionBase
  4845.         tst.b    WBFront(a4)
  4846.         beq.s    .NoWB
  4847.         move.l    MainHandle(a4),a0
  4848.         move.l    wd_WScreen(a0),a0
  4849.         DOLIB    ScreenToFront
  4850. .NoWB        rts
  4851. .End        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  4852.         lea    MainTxt(a4),a0
  4853.         move.l    a0,FontPtr(a5)
  4854.         bsr    LockScreen
  4855.         tst.l    d0
  4856.         beq    .MainWinError
  4857.         moveq    #0,d2
  4858.         moveq    #0,d3
  4859.         RELLIB    ComputeFont,_KCXBase
  4860.         move.l    -4(a5),a0
  4861.         sub.l    a1,a1
  4862.         RELLIB    GetVisualInfoA,_GadToolsBase
  4863.         move.l    d0,MainVisInfo(a4)
  4864.         beq    .MainWinError
  4865.  
  4866.         tst.b    WBFront(a4)
  4867.         beq.s    .NoWBFront
  4868.         move.l    -4(a5),a0
  4869.         RELLIB    ScreenToFront,_IntuitionBase
  4870.  
  4871. .NoWBFront    move.l    -4(a5),a0
  4872.         moveq    #0,d3
  4873.         moveq    #0,d2
  4874.         move.w    MainWinWidth(a4),d2
  4875.         move.w    MainWinHeight(a4),d3
  4876.         RELLIB    ComputeFont,_KCXBase
  4877.         move.l    -4(a5),a0
  4878.         move.l    d2,d0
  4879.         DOLIB    ComputeX
  4880.         move.l    d0,d4
  4881.         move.w    MainWinLeft(a4),d2
  4882.         move.l    -4(a5),a3
  4883.         move.w    sc_LeftEdge(a3),d5
  4884.         neg.w    d5
  4885.         add.w    d5,d2
  4886.         add.w    d2,d0
  4887.         add.w    OffX(a5),d0
  4888.         moveq    #0,d1
  4889.         move.b    sc_WBorRight(a0),d1
  4890.         add.w    d1,d0
  4891.         cmp.w    sc_Width(a0),d0
  4892.         bls.s    .WOk
  4893.         move.w    sc_Width(a0),d0
  4894.         sub.w    d4,d0
  4895.         move.w    d0,d2
  4896. .WOk        move.l    d3,d0
  4897.         DOLIB    ComputeY
  4898.         move.l    d0,d4
  4899.         move.w    MainWinTop(a4),d3
  4900.         move.l    -4(a5),a3
  4901.         move.w    sc_TopEdge(a3),d5
  4902.         neg.w    d5
  4903.         add.w    d5,d3
  4904.         add.w    d3,d0
  4905.         add.w    OffY(a5),d0
  4906.         moveq    #0,d1
  4907.         move.b    sc_WBorBottom(a0),d1
  4908.         add.w    d1,d0
  4909.         cmp.w    sc_Height(a0),d0
  4910.         bls.s    .HOk
  4911.         move.w    sc_Height(a0),d0
  4912.         sub.w    d4,d0
  4913.         move.w    d0,d3
  4914. .HOk        lea.l    MainGadget(a4),a0
  4915.         RELLIB    CreateContext,_GadToolsBase
  4916.         move.l    d0,a3
  4917.         beq    .MainWinError
  4918.  
  4919.         movem.l d2-d3/a4,-(sp)
  4920.         moveq    #0,d3
  4921.         lea.l    MainWinGTags,a4
  4922. .MainWinGL    lea.l    MainWinNGads,a0
  4923.         move.l    d3,d0
  4924.         mulu    #gng_SIZEOF,d0
  4925.         add.l    d0,a0
  4926.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  4927.         moveq    #gng_SIZEOF,d0
  4928.         CALLSYS    CopyMem
  4929.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  4930.         move.l    a4,-(sp)
  4931.         move.l    ZeroBase(pc),a4
  4932.         move.l    gng_GadgetText(a0),d0
  4933.         move.l    d0,-(sp)
  4934.         bsr    GetLocStr
  4935.         move.l    (sp)+,d7
  4936.         move.l    d7,gng_GadgetText(a0)
  4937.         move.l    MainVisInfo(a4),gng_VisualInfo(a0)
  4938.         move.l    FontPtr(a5),gng_TextAttr(a0)
  4939.         move.w    gng_LeftEdge(a0),d0
  4940.         RELLIB    ComputeX,_KCXBase
  4941.         add.w    OffX(a5),d0
  4942.         move.w    d0,gng_LeftEdge(a0)
  4943.         move.w    gng_TopEdge(a0),d0
  4944.         DOLIB    ComputeY
  4945.         add.w    OffY(a5),d0
  4946.         move.w    d0,gng_TopEdge(a0)
  4947.         move.w    gng_Width(a0),d0
  4948.         DOLIB    ComputeX
  4949.         move.w    d0,gng_Width(a0)
  4950.         move.w    gng_Height(a0),d0
  4951.         DOLIB    ComputeY
  4952.         move.w    d0,gng_Height(a0)
  4953.         lea.l    MainWinGTypes,a0
  4954.         moveq    #0,d0
  4955.         move.l    d3,d1
  4956.         lsl.l    #1,d1
  4957.         move.w    0(a0,d1.w),d0
  4958.         move.l    a3,a0
  4959.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  4960.         move.l    (sp)+,a4
  4961.         move.l    a4,a2
  4962.         move.l    a4,-(sp)
  4963.         move.l    ZeroBase(pc),a4
  4964.         RELLIB    CreateGadgetA,_GadToolsBase
  4965.         move.l    (sp)+,a4
  4966.         tst.l    d0
  4967.         beq    .MainWinError
  4968.         move.l    d0,a3
  4969.         move.l    d7,a0
  4970.         bsr    LocalizeGadKey
  4971.         move.l    d1,gg_UserData(a3)
  4972.         move.l    d3,d0
  4973.         lsl.l    #2,d0
  4974.         move.l    a4,-(sp)
  4975.         move.l    ZeroBase(pc),a4
  4976.         lea.l    MainGads(a4),a0
  4977.         move.l    (sp)+,a4
  4978.         move.l    a3,0(a0,d0.w)
  4979. .MainWinTL    tst.l    (a4)
  4980.         beq.s    .MainWinDN
  4981.         addq.w    #8,a4
  4982.         bra.s    .MainWinTL
  4983. .MainWinDN    addq.w    #4,a4
  4984.         addq.w    #1,d3
  4985.         cmp.w    #MainWin_CNT,d3
  4986.         bmi    .MainWinGL
  4987.         movem.l (sp)+,d2-d3/a4
  4988.         move.l    MainGadget(a4),MainWinWG+4
  4989.  
  4990.         lea.l    MainWinMenuDef,a2        ; Create menues
  4991. .LocMenus    tst.b    gnm_Type(a2)
  4992.         beq.s    .DoneMenus
  4993.         move.l    gnm_Label(a2),d0
  4994.         cmp.l    #NM_BARLABEL,d0
  4995.         beq.s    .NoLocMenu
  4996.         move.l    d0,-(sp)
  4997.         bsr    GetLocStr
  4998.         move.l    (sp)+,gnm_Label(a2)
  4999.         move.l    gnm_CommKey(a2),-(sp)
  5000.         bsr    GetLocStr
  5001.         move.l    (sp)+,gnm_CommKey(a2)
  5002. .NoLocMenu    lea    gnm_SIZEOF(a2),a2
  5003.         bra.s    .LocMenus
  5004.  
  5005. .DoneMenus    lea    MainWinMenuDef,a0
  5006.         sub.l    a1,a1
  5007.         RELLIB    CreateMenusA,_GadToolsBase
  5008.         move.l    d0,MainMenu(a4)
  5009.         beq    .MainWinError
  5010.         move.l    d0,a0
  5011.         move.l    MainVisInfo(a4),a1
  5012.         lea    MainMenuTags,a2
  5013.         DOLIB    LayoutMenusA
  5014.  
  5015.         LOCLEA    DefControlTitle,a0
  5016.         lea    ControlTitle(a4),a1
  5017.         bsr    StrCpy
  5018.         lea    PopUpKey(a4),a0
  5019.         lea    ControlTitle(a4),a1
  5020.         bsr    StrCat
  5021.         LOCLEA    WindowScrTitle,MainWinWG+20
  5022.         move.l    -4(a5),MainWinSC+4        ; Open window
  5023.         ext.l    d2
  5024.         ext.l    d3
  5025.         move.l    d2,MainWinL+4
  5026.         move.l    d3,MainWinT+4
  5027.         move.l    -4(a5),a0
  5028.         move.w    MainWinWidth(a4),d0
  5029.         RELLIB    ComputeX,_KCXBase
  5030.         add.w    OffX(a5),d0
  5031.         moveq    #0,d1
  5032.         move.b    sc_WBorRight(a0),d1
  5033.         add.w    d1,d0
  5034.         move.l    d0,MainWinW+4
  5035.         move.w    MainWinHeight(a4),d0
  5036.         DOLIB    ComputeY
  5037.         add.w    OffY(a5),d0
  5038.         moveq    #0,d1
  5039.         move.b    sc_WBorBottom(a0),d1
  5040.         add.w    d1,d0
  5041.         move.l    d0,MainWinH+4
  5042.         suba.l    a0,a0
  5043.         lea.l    MainWinWindowTags,a1
  5044.         RELLIB    OpenWindowTagList,_IntuitionBase
  5045.         move.l    d0,MainHandle(a4)
  5046.         beq.s    .MainWinError
  5047.         move.l    d0,a0
  5048.         move.l    WindowPort(a4),wd_UserPort(a0)
  5049.         move.l    #MAINWINIDCMP,d0
  5050.         DOLIB    ModifyIDCMP
  5051.  
  5052.         move.l    MainHandle(a4),a0
  5053.         move.l    MainMenu(a4),a1
  5054.         DOLIB    SetMenuStrip
  5055.  
  5056.         move.l    MainHandle(a4),a0
  5057.         suba.l    a1,a1
  5058.         RELLIB    GT_RefreshWindow,_GadToolsBase
  5059.  
  5060.         bsr    UnlockScreen
  5061.         moveq    #0,d0
  5062.         unlk    a5
  5063.         rts
  5064. .MainWinError    bsr.s    CloseMainWin
  5065.         bsr    UnlockScreen
  5066.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  5067.         bsr    DisplayError
  5068.         moveq    #-1,d0
  5069.         unlk    a5
  5070.         rts
  5071.  
  5072.  
  5073. **********************************************************************
  5074. *                Close the main window with it`s menu                *
  5075. **********************************************************************
  5076. CloseMainWin    tst.l    MainHandle(a4)
  5077.         beq.s    .NoWin
  5078.         move.l    MainHandle(a4),a0
  5079.         RELLIB    ClearMenuStrip,_IntuitionBase
  5080.         lea    MainHandle(a4),a3
  5081.         bsr    CloseAWindow
  5082. .NoWin        tst.l    MainMenu(a4)            ; Free GadTools-Menus
  5083.         beq.s    .NoMenu
  5084.         move.l    MainMenu(a4),a0
  5085.         RELLIB    FreeMenus,_GadToolsBase
  5086. .NoMenu        clr.l    MainMenu(a4)
  5087.         move.w    #1,AbortPrefs(a4)
  5088.         rts
  5089.  
  5090.  
  5091.  
  5092.  
  5093.  
  5094. **********************************************************************
  5095. *                    Localize a gadget`s shortcut                    *
  5096. *  A0 = Pointer to text                                              *
  5097. *  RETURN :                                                          *
  5098. *  D1 = Shortcut                                                     *
  5099. **********************************************************************
  5100. LocalizeGadKey    move.l    d0,-(sp)
  5101.         moveq    #0,d1
  5102.         move.l    a0,d2
  5103.         beq.s    .End
  5104. .GetShort    move.b    (a0)+,d2
  5105.         beq.s    .End
  5106.         cmp.b    #'_',d2
  5107.         bne.s    .GetShort
  5108.         moveq    #0,d0
  5109.         move.b    (a0),d0
  5110.         bsr    GetUpperCase
  5111.         move.l    d0,d1
  5112. .End        move.l    (sp)+,d0
  5113.         rts
  5114.  
  5115.  
  5116.  
  5117. **********************************************************************
  5118. *         Localizes tags of a ListView, Cycle and MX gadget          *
  5119. * D0 = Type of Gadget                                                *
  5120. * A2 = Pointer to TagList                                            *
  5121. **********************************************************************
  5122. LocalizeGadTags    movem.l    RegsAll,-(sp)
  5123.         cmp.w    #CYCLE_KIND,d0
  5124.         bne.s    .NoCycle
  5125.         move.l    #GTCY_Labels,d0
  5126.         move.l    a2,a0
  5127.         RELLIB    FindTagItem,_UtilityBase
  5128.         tst.l    d0
  5129.         beq.s    .End
  5130.         move.l    d0,a2
  5131.         move.l    ti_Data(a2),a2
  5132. .PatchCycles    move.l    (a2),d0
  5133.         beq.s    .End
  5134.         move.l    d0,-(sp)
  5135.         bsr    GetLocStr
  5136.         move.l    (sp)+,(a2)
  5137.         addq.l    #4,a2
  5138.         bra.s    .PatchCycles
  5139. .NoCycle    cmp.w    #LISTVIEW_KIND,d0
  5140.         bne.s    .NoListView
  5141.         move.l    #GTLV_Labels,d0
  5142.         move.l    a2,a0
  5143.         RELLIB    FindTagItem,_UtilityBase
  5144.         tst.l    d0
  5145.         beq.s    .End
  5146.         move.l    d0,a2
  5147.         move.l    ti_Data(a2),a2
  5148.         TSTLIST    a2
  5149.         beq.s    .End
  5150.         move.l    MLH_HEAD(a2),a2
  5151. .PatchListView    tst.l    (a2)
  5152.         beq.s    .End
  5153.         move.l    LN_NAME(a2),-(sp)
  5154.         bsr    GetLocStr
  5155.         move.l    (sp)+,LN_NAME(a2)
  5156.         SUCC    a2,a2
  5157.         bra.s    .PatchListView
  5158. .NoListView    cmp.w    #TEXT_KIND,d0
  5159.         bne.s    .End
  5160.         move.l    #GTTX_Text,d0
  5161.         move.l    a2,a0
  5162.         RELLIB    FindTagItem,_UtilityBase
  5163.         tst.l    d0
  5164.         beq.s    .End
  5165.         move.l    d0,a0
  5166.         move.l    ti_Data(a0),-(sp)
  5167.         bsr    GetLocStr
  5168.         move.l    (sp)+,ti_Data(a0)
  5169. .End        movem.l    (sp)+,RegsAll
  5170.         rts
  5171.  
  5172.  
  5173.  
  5174.  
  5175.  
  5176. **********************************************************************
  5177. *                      Open the settings window                      *
  5178. **********************************************************************
  5179. OpenSetWin    tst.l    SetHandle(a4)
  5180.         beq.s    .GoOn
  5181.         move.l    SetHandle(a4),a0
  5182.         RELLIB    WindowToFront,_IntuitionBase
  5183.         rts
  5184. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  5185.         lea    SetTxt(a4),a0
  5186.         move.l    a0,FontPtr(a5)
  5187.         bsr    LockScreen
  5188.         tst.l    d0
  5189.         beq    .SetWinError
  5190.         moveq    #0,d2
  5191.         moveq    #0,d3
  5192.         RELLIB    ComputeFont,_KCXBase
  5193.         move.l    -4(a5),a0
  5194.         sub.l    a1,a1
  5195.         RELLIB    GetVisualInfoA,_GadToolsBase
  5196.         move.l    d0,SetVisInfo(a4)
  5197.         beq    .SetWinError
  5198.  
  5199.         move.l    -4(a5),a0
  5200.         moveq    #0,d3
  5201.         moveq    #0,d2
  5202.         move.w    SetWinWidth(a4),d2
  5203.         move.w    SetWinHeight(a4),d3
  5204.         RELLIB    ComputeFont,_KCXBase
  5205.         move.l    -4(a5),a0
  5206.         move.l    d2,d0
  5207.         DOLIB    ComputeX
  5208.         move.l    d0,d4
  5209.         move.w    SetWinLeft(a4),d2
  5210.         move.l    -4(a5),a3
  5211.         move.w    sc_LeftEdge(a3),d5
  5212.         neg.w    d5
  5213.         add.w    d5,d2
  5214.         add.w    d2,d0
  5215.         add.w    OffX(a5),d0
  5216.         moveq    #0,d1
  5217.         move.b    sc_WBorRight(a0),d1
  5218.         add.w    d1,d0
  5219.         cmp.w    sc_Width(a0),d0
  5220.         bls.s    .WOk
  5221.         move.w    sc_Width(a0),d0
  5222.         sub.w    d4,d0
  5223.         move.w    d0,d2
  5224. .WOk        move.l    d3,d0
  5225.         DOLIB    ComputeY
  5226.         move.l    d0,d4
  5227.         move.w    SetWinTop(a4),d3
  5228.         move.l    -4(a5),a3
  5229.         move.w    sc_TopEdge(a3),d5
  5230.         neg.w    d5
  5231.         add.w    d5,d3
  5232.         add.w    d3,d0
  5233.         add.w    OffY(a5),d0
  5234.         moveq    #0,d1
  5235.         move.b    sc_WBorBottom(a0),d1
  5236.         add.w    d1,d0
  5237.         cmp.w    sc_Height(a0),d0
  5238.         bls.s    .HOk
  5239.         move.w    sc_Height(a0),d0
  5240.         sub.w    d4,d0
  5241.         move.w    d0,d3
  5242. .HOk        lea.l    SetGadget(a4),a0
  5243.         RELLIB    CreateContext,_GadToolsBase
  5244.         move.l    d0,a3
  5245.         beq    .SetWinError
  5246.  
  5247.         movem.l d2-d3/a4,-(sp)
  5248.         moveq    #0,d3
  5249.         lea.l    SetWinGTags,a4
  5250. .SetWinGL    lea.l    SetWinNGads,a0
  5251.         move.l    d3,d0
  5252.         mulu    #gng_SIZEOF,d0
  5253.         add.l    d0,a0
  5254.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  5255.         moveq    #gng_SIZEOF,d0
  5256.         CALLSYS    CopyMem
  5257.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  5258.         move.l    a4,-(sp)
  5259.         move.l    ZeroBase(pc),a4
  5260.         move.l    gng_GadgetText(a0),d0
  5261.         move.l    d0,-(sp)
  5262.         bsr    GetLocStr
  5263.         move.l    (sp)+,d7
  5264.         move.l    d7,gng_GadgetText(a0)
  5265.         move.l    SetVisInfo(a4),gng_VisualInfo(a0)
  5266.         move.l    FontPtr(a5),gng_TextAttr(a0)
  5267.         move.w    gng_LeftEdge(a0),d0
  5268.         RELLIB    ComputeX,_KCXBase
  5269.         add.w    OffX(a5),d0
  5270.         move.w    d0,gng_LeftEdge(a0)
  5271.         move.w    gng_TopEdge(a0),d0
  5272.         DOLIB    ComputeY
  5273.         add.w    OffY(a5),d0
  5274.         move.w    d0,gng_TopEdge(a0)
  5275.         move.w    gng_Width(a0),d0
  5276.         DOLIB    ComputeX
  5277.         move.w    d0,gng_Width(a0)
  5278.         move.w    gng_Height(a0),d0
  5279.         DOLIB    ComputeY
  5280.         move.l    (sp)+,a4
  5281.         move.w    d0,gng_Height(a0)
  5282.         lea.l    SetWinGTypes,a0
  5283.         moveq    #0,d0
  5284.         move.l    d3,d1
  5285.         lsl.l    #1,d1
  5286.         move.w    0(a0,d1.w),d0
  5287.         move.l    a3,a0
  5288.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  5289.         move.l    a4,a2
  5290.         move.l    a4,-(sp)
  5291.         move.l    ZeroBase(pc),a4
  5292.         RELLIB    CreateGadgetA,_GadToolsBase
  5293.         move.l    (sp)+,a4
  5294.         tst.l    d0
  5295.         beq    .SetWinError
  5296.         move.l    d0,a3
  5297.         move.l    d7,a0
  5298.         bsr    LocalizeGadKey
  5299.         move.l    d1,gg_UserData(a3)
  5300.         move.l    d0,a3
  5301.         move.l    d3,d0
  5302.         lsl.l    #2,d0
  5303.         move.l    a4,-(sp)
  5304.         move.l    ZeroBase(pc),a4
  5305.         lea.l    SetGads(a4),a0
  5306.         move.l    (sp)+,a4
  5307.         move.l    a3,0(a0,d0.w)
  5308. .SetWinTL    tst.l    (a4)
  5309.         beq.s    .SetWinDN
  5310.         addq.w    #8,a4
  5311.         bra.s    .SetWinTL
  5312. .SetWinDN    addq.w    #4,a4
  5313.         addq.w    #1,d3
  5314.         cmp.w    #SetWin_CNT,d3
  5315.         bmi    .SetWinGL
  5316.         movem.l (sp)+,d2-d3/a4
  5317.         move.l    SetGadget(a4),SetWinWG+4
  5318.  
  5319.         LOCLEA    SetTitle,SetWinWG+12
  5320.         LOCLEA    WindowScrTitle,SetWinWG+20
  5321.         move.l    -4(a5),SetWinSC+4        ; Open window
  5322.         ext.l    d2
  5323.         ext.l    d3
  5324.         move.l    d2,SetWinL+4
  5325.         move.l    d3,SetWinT+4
  5326.         move.l    -4(a5),a0
  5327.         move.w    SetWinWidth(a4),d0
  5328.         RELLIB    ComputeX,_KCXBase
  5329.         add.w    OffX(a5),d0
  5330.         moveq    #0,d1
  5331.         move.b    sc_WBorRight(a0),d1
  5332.         add.w    d1,d0
  5333.         move.l    d0,SetWinW+4
  5334.         move.w    SetWinHeight(a4),d0
  5335.         DOLIB    ComputeY
  5336.         add.w    OffY(a5),d0
  5337.         moveq    #0,d1
  5338.         move.b    sc_WBorBottom(a0),d1
  5339.         add.w    d1,d0
  5340.         move.l    d0,SetWinH+4
  5341.         suba.l    a0,a0
  5342.         lea.l    SetWinWindowTags,a1
  5343.         RELLIB    OpenWindowTagList,_IntuitionBase
  5344.         move.l    d0,SetHandle(a4)
  5345.         beq.s    .SetWinError
  5346.         move.l    d0,a0
  5347.         move.l    WindowPort(a4),wd_UserPort(a0)
  5348.         move.l    #SETWINIDCMP,d0
  5349.         DOLIB    ModifyIDCMP
  5350.  
  5351.         move.l    SetHandle(a4),a0
  5352.         suba.l    a1,a1
  5353.         RELLIB    GT_RefreshWindow,_GadToolsBase
  5354.  
  5355.         bsr.s    SetSetGads
  5356.         bsr    UnlockScreen
  5357.         unlk    a5
  5358.         rts
  5359. .SetWinError    bsr.s    CloseSetWin
  5360.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  5361.         bsr    DisplayError
  5362.         bsr    UnlockScreen
  5363.         unlk    a5
  5364.         rts
  5365.  
  5366. **********************************************************************
  5367. *                     Close the settings window                      *
  5368. **********************************************************************
  5369. CloseSetWin    lea    SetHandle(a4),a3
  5370.         bsr    CloseAWindow
  5371.         rts
  5372.  
  5373.  
  5374. **********************************************************************
  5375. *                      Set the settings gadgets                      *
  5376. **********************************************************************
  5377. SetSetGads    move.b    SetEnv(a4),d0
  5378.         move.l    #GD_WriteEnv,d1
  5379.         bsr.s    SetSetBox
  5380.         move.b    WBFront(a4),d0
  5381.         move.l    #GD_WBFront,d1
  5382.         bsr.s    SetSetBox
  5383.         move.b    MapUmlaut(a4),d0
  5384.         move.l    #GD_MapUmlauts,d1
  5385.         bsr.s    SetSetBox
  5386.         move.b    MMBShift(a4),d0            ; Set MMB Shift
  5387.         move.l    #GD_MMBShift,d1
  5388.         bsr.s    SetSetBox
  5389.         move.b    DriveNoClick(a4),d0
  5390.         move.l    #GD_NoClick,d1
  5391.         bsr.s    SetSetBox
  5392.         move.b    NoDisplayBeep(a4),d0
  5393.         move.l    #GD_NoDisplayBeep,d1
  5394.         bsr.s    SetSetBox
  5395.         move.b    MenuWrap(a4),d0
  5396.         move.l    #GD_MenuWrap,d1
  5397.         bsr.s    SetSetBox
  5398.         move.b    StringMenu(a4),d0
  5399.         move.l    #GD_StringMenu,d1
  5400.         bsr.s    SetSetBox
  5401.         move.b    FlickerOff(a4),d0
  5402.         move.l    #GD_AvoidFlicker,d1
  5403.         bsr.s    SetSetBox
  5404.         rts
  5405. SetSetBox    lea    SetGads(a4),a0
  5406.         move.l    SetHandle(a4),a1
  5407.         RELLIB    SetCheckBox,_KCXBase
  5408.         rts
  5409.  
  5410.  
  5411. **********************************************************************
  5412. *                   Open the miscellaneous window                    *
  5413. **********************************************************************
  5414. OpenMiscWin    tst.l    MiscHandle(a4)
  5415.         beq.s    .GoOn
  5416.         move.l    MiscHandle(a4),a0
  5417.         RELLIB    WindowToFront,_IntuitionBase
  5418.         rts
  5419. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  5420.         lea    MiscTxt(a4),a0
  5421.         move.l    a0,FontPtr(a5)
  5422.         bsr    LockScreen
  5423.         tst.l    d0
  5424.         beq    .MiscWinError
  5425.         moveq    #0,d2
  5426.         moveq    #0,d3
  5427.         RELLIB    ComputeFont,_KCXBase
  5428.         move.l    -4(a5),a0
  5429.         sub.l    a1,a1
  5430.         RELLIB    GetVisualInfoA,_GadToolsBase
  5431.         move.l    d0,MiscVisInfo(a4)
  5432.         beq    .MiscWinError
  5433.  
  5434.         move.l    -4(a5),a0
  5435.         moveq    #0,d3
  5436.         moveq    #0,d2
  5437.         move.w    MiscWinWidth(a4),d2
  5438.         move.w    MiscWinHeight(a4),d3
  5439.         RELLIB    ComputeFont,_KCXBase
  5440.         move.l    -4(a5),a0
  5441.         move.l    d2,d0
  5442.         DOLIB    ComputeX
  5443.         move.l    d0,d4
  5444.         move.w    MiscWinLeft(a4),d2
  5445.         move.l    -4(a5),a3
  5446.         move.w    sc_LeftEdge(a3),d5
  5447.         neg.w    d5
  5448.         add.w    d5,d2
  5449.         add.w    d2,d0
  5450.         add.w    OffX(a5),d0
  5451.         moveq    #0,d1
  5452.         move.b    sc_WBorRight(a0),d1
  5453.         add.w    d1,d0
  5454.         cmp.w    sc_Width(a0),d0
  5455.         bls.s    .WOk
  5456.         move.w    sc_Width(a0),d0
  5457.         sub.w    d4,d0
  5458.         move.w    d0,d2
  5459. .WOk        move.l    d3,d0
  5460.         DOLIB    ComputeY
  5461.         move.l    d0,d4
  5462.         move.w    MiscWinTop(a4),d3
  5463.         move.l    -4(a5),a3
  5464.         move.w    sc_TopEdge(a3),d5
  5465.         neg.w    d5
  5466.         add.w    d5,d3
  5467.         add.w    d3,d0
  5468.         add.w    OffY(a5),d0
  5469.         moveq    #0,d1
  5470.         move.b    sc_WBorBottom(a0),d1
  5471.         add.w    d1,d0
  5472.         cmp.w    sc_Height(a0),d0
  5473.         bls.s    .HOk
  5474.         move.w    sc_Height(a0),d0
  5475.         sub.w    d4,d0
  5476.         move.w    d0,d3
  5477. .HOk        lea.l    MiscGadget(a4),a0
  5478.         RELLIB    CreateContext,_GadToolsBase
  5479.         move.l    d0,a3
  5480.         beq    .MiscWinError
  5481.  
  5482.         movem.l d2-d3/a4,-(sp)
  5483.         moveq    #0,d3
  5484.         lea.l    MiscWinGTags,a4
  5485. .MiscWinGL    lea.l    MiscWinNGads,a0
  5486.         move.l    d3,d0
  5487.         mulu    #gng_SIZEOF,d0
  5488.         add.l    d0,a0
  5489.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  5490.         moveq    #gng_SIZEOF,d0
  5491.         CALLSYS    CopyMem
  5492.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  5493.         move.l    a4,-(sp)
  5494.         move.l    ZeroBase(pc),a4
  5495.         move.l    gng_GadgetText(a0),-(sp)
  5496.         bsr    GetLocStr
  5497.         move.l    (sp)+,d7
  5498.         move.l    d7,gng_GadgetText(a0)
  5499.         move.l    MiscVisInfo(a4),gng_VisualInfo(a0)
  5500.         move.l    FontPtr(a5),gng_TextAttr(a0)
  5501.         move.w    gng_LeftEdge(a0),d0
  5502.         RELLIB    ComputeX,_KCXBase
  5503.         add.w    OffX(a5),d0
  5504.         move.w    d0,gng_LeftEdge(a0)
  5505.         move.w    gng_TopEdge(a0),d0
  5506.         DOLIB    ComputeY
  5507.         add.w    OffY(a5),d0
  5508.         move.w    d0,gng_TopEdge(a0)
  5509.         move.w    gng_Width(a0),d0
  5510.         DOLIB    ComputeX
  5511.         move.w    d0,gng_Width(a0)
  5512.         move.w    gng_Height(a0),d0
  5513.         DOLIB    ComputeY
  5514.         move.l    (sp)+,a4
  5515.         move.w    d0,gng_Height(a0)
  5516.         lea.l    MiscWinGTypes,a0
  5517.         moveq    #0,d0
  5518.         move.l    d3,d1
  5519.         lsl.l    #1,d1
  5520.         move.w    0(a0,d1.w),d0
  5521.         move.l    a3,a0
  5522.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  5523.         move.l    a4,a2
  5524.         move.l    a4,-(sp)
  5525.         move.l    ZeroBase(pc),a4
  5526.         bsr    LocalizeGadTags
  5527.         RELLIB    CreateGadgetA,_GadToolsBase
  5528.         move.l    (sp)+,a4
  5529.         tst.l    d0
  5530.         beq    .MiscWinError
  5531.         move.l    d0,a3
  5532.         move.l    d7,a0
  5533.         bsr    LocalizeGadKey
  5534.         move.l    d1,gg_UserData(a3)
  5535.         move.l    d0,a3
  5536.         move.l    d3,d0
  5537.         lsl.l    #2,d0
  5538.         move.l    a4,-(sp)
  5539.         move.l    ZeroBase(pc),a4
  5540.         lea.l    MiscGads(a4),a0
  5541.         move.l    (sp)+,a4
  5542.         move.l    a3,0(a0,d0.w)
  5543. .MiscWinTL    tst.l    (a4)
  5544.         beq.s    .MiscWinDN
  5545.         addq.w    #8,a4
  5546.         bra.s    .MiscWinTL
  5547. .MiscWinDN    addq.w    #4,a4
  5548.         addq.w    #1,d3
  5549.         cmp.w    #MiscWin_CNT,d3
  5550.         bmi    .MiscWinGL
  5551.         movem.l (sp)+,d2-d3/a4
  5552.         move.l    MiscGadget(a4),MiscWinWG+4
  5553.  
  5554.         lea    MiscGads(a4),a0
  5555.         bsr    SetStrIntGads
  5556.  
  5557.         LOCLEA    MiscTitle,MiscWinWG+12
  5558.         LOCLEA    WindowScrTitle,MiscWinWG+20
  5559.         move.l    -4(a5),MiscWinSC+4        ; Open window
  5560.         ext.l    d2
  5561.         ext.l    d3
  5562.         move.l    d2,MiscWinL+4
  5563.         move.l    d3,MiscWinT+4
  5564.         move.l    -4(a5),a0
  5565.         move.w    MiscWinWidth(a4),d0
  5566.         RELLIB    ComputeX,_KCXBase
  5567.         add.w    OffX(a5),d0
  5568.         moveq    #0,d1
  5569.         move.b    sc_WBorRight(a0),d1
  5570.         add.w    d1,d0
  5571.         move.l    d0,MiscWinW+4
  5572.         move.w    MiscWinHeight(a4),d0
  5573.         DOLIB    ComputeY
  5574.         add.w    OffY(a5),d0
  5575.         moveq    #0,d1
  5576.         move.b    sc_WBorBottom(a0),d1
  5577.         add.w    d1,d0
  5578.         move.l    d0,MiscWinH+4
  5579.         suba.l    a0,a0
  5580.         lea.l    MiscWinWindowTags,a1
  5581.         RELLIB    OpenWindowTagList,_IntuitionBase
  5582.         move.l    d0,MiscHandle(a4)
  5583.         beq.s    .MiscWinError
  5584.         move.l    d0,a0
  5585.         move.l    WindowPort(a4),wd_UserPort(a0)
  5586.         move.l    #MISCWINIDCMP,d0
  5587.         DOLIB    ModifyIDCMP
  5588.  
  5589.         move.l    MiscHandle(a4),a0
  5590.         suba.l    a1,a1
  5591.         RELLIB    GT_RefreshWindow,_GadToolsBase
  5592.  
  5593.         bsr.s    SetMiscGads
  5594.         bsr    UnlockScreen
  5595.         unlk    a5
  5596.         rts
  5597. .MiscWinError    bsr    CloseMiscWin
  5598.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  5599.         bsr    DisplayError
  5600.         bsr    UnlockScreen
  5601.         unlk    a5
  5602.         rts
  5603.  
  5604.  
  5605. **********************************************************************
  5606. *                        Set other misc gads                         *
  5607. **********************************************************************
  5608. SetMiscGads    move.b    KeyClick(a4),d0            ; Set Click gadgets
  5609.         move.l    #GD_KeyClick,d1
  5610.         bsr    SetMiscBox
  5611.  
  5612.         move.l    #GD_ClickVol,d0
  5613.         move.l    ClickVol(a4),d1
  5614.         lea    MiscGads(a4),a0
  5615.         move.l    MiscHandle(a4),a1
  5616.         RELLIB    SetSliderGad,_KCXBase
  5617.  
  5618.         move.b    ESCClose(a4),d0            ; Set Exploding windows gads
  5619.         move.l    #GD_ESCClose,d1
  5620.         bsr    SetMiscBox
  5621.  
  5622.         move.l    #RESCKEY,d0
  5623.         move.w    ESCQual(a4),d1
  5624.         move.l    #GD_ESCQualTxt,d2
  5625.         lea    MiscGads(a4),a0
  5626.         move.l    MiscHandle(a4),a1
  5627.         lea    EscQualStr(a4),a2
  5628.         bsr    DisplayHotKey
  5629.  
  5630.         move.b    FullDrag(a4),d0            ; Front drag settings
  5631.         move.l    #GD_FullDrag,d1
  5632.         bsr    SetMiscBox
  5633.  
  5634.         move.l    #IECODE_LBUTTON,d0
  5635.         move.w    FullDragQual(a4),d1
  5636.         move.l    #GD_DragQualTxt,d2
  5637.         lea    MiscGads(a4),a0
  5638.         move.l    MiscHandle(a4),a1
  5639.         lea    DragQualStr(a4),a2
  5640.         bsr    DisplayHotKey
  5641.  
  5642.         move.b    AltModeOn(a4),d0
  5643.         move.l    #GD_AltMode,d1
  5644.         bsr    SetMiscBox
  5645.  
  5646.         move.l    #GD_AltQual,d0
  5647.         move.w    AltQual(a4),d1
  5648.         DOLIB    SetCycleGad
  5649.  
  5650.         bsr.s    SetWindowsGads
  5651.         rts
  5652.  
  5653.  
  5654.  
  5655. **********************************************************************
  5656. *                 Set gads and menues for ExpWindows                 *
  5657. **********************************************************************
  5658. SetWindowsGads    move.l    #GD_ExpFrames,d0
  5659.         move.l    ExpFrames(a4),d1
  5660.         bsr    SetMiscSlids
  5661.  
  5662.         move.l    #GD_ImpFrames,d0
  5663.         move.l    ImpFrames(a4),d1
  5664.         bsr    SetMiscSlids
  5665.  
  5666.         move.l    #GD_SizeFrames,d0
  5667.         move.l    SizeFrames(a4),d1
  5668.         bsr.s    SetMiscSlids
  5669.  
  5670.         move.l    #GD_MoveFrames,d0
  5671.         move.l    MoveFrames(a4),d1
  5672.         bsr.s    SetMiscSlids
  5673.  
  5674.         move.l    #GD_ExpFrames,d0        ; On/Off frames gadgets
  5675.         moveq    #0,d1
  5676.         move.b    ExpWindows(a4),d1
  5677.         bchg    #0,d1
  5678.         DOLIB    GhostGadget
  5679.  
  5680.         move.l    #GD_ImpFrames,d0
  5681.         DOLIB    GhostGadget
  5682.  
  5683.         move.l    #GD_SizeFrames,d0
  5684.         DOLIB    GhostGadget
  5685.  
  5686.         move.l    #GD_MoveFrames,d0
  5687.         DOLIB    GhostGadget
  5688.  
  5689.         move.l    #GD_MouseCtr,d0
  5690.         DOLIB    GhostGadget
  5691.  
  5692.         move.b    ExpWindows(a4),d0
  5693.         move.l    #GD_ExpWindows,d1
  5694.         bsr.s    SetMiscBox
  5695.  
  5696.         move.b    MouseCenter(a4),d0
  5697.         move.l    #GD_MouseCtr,d1
  5698.         bsr.s    SetMiscBox
  5699.         rts
  5700. SetMiscBox    lea    MiscGads(a4),a0
  5701.         move.l    MiscHandle(a4),a1
  5702.         RELLIB    SetCheckBox,_KCXBase
  5703.         rts
  5704. SetMiscSlids    lea    MiscGads(a4),a0
  5705.         move.l    MiscHandle(a4),a1
  5706.         RELLIB    SetSliderGad,_KCXBase
  5707.         rts
  5708.  
  5709.  
  5710. **********************************************************************
  5711. *                   Close the miscellaneous window                   *
  5712. **********************************************************************
  5713. CloseMiscWin    lea    MiscHandle(a4),a3
  5714.         bra    CloseAWindow
  5715.  
  5716.  
  5717. **********************************************************************
  5718. *                        Open the alarm window                       *
  5719. **********************************************************************
  5720. OpenAlarmWin    tst.l    AlarmHandle(a4)
  5721.         beq.s    .GoOn
  5722.         move.l    AlarmHandle(a4),a0
  5723.         RELLIB    WindowToFront,_IntuitionBase
  5724.         rts
  5725. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  5726.         lea    AlarmTxt(a4),a0
  5727.         move.l    a0,FontPtr(a5)
  5728.         bsr    LockScreen
  5729.         tst.l    d0
  5730.         beq    .AlarmWinError
  5731.         moveq    #0,d2
  5732.         moveq    #0,d3
  5733.         RELLIB    ComputeFont,_KCXBase
  5734.         move.l    -4(a5),a0
  5735.         sub.l    a1,a1
  5736.         RELLIB    GetVisualInfoA,_GadToolsBase
  5737.         move.l    d0,AlarmVisInfo(a4)
  5738.         beq    .AlarmWinError
  5739.  
  5740.         move.l    -4(a5),a0
  5741.         moveq    #0,d3
  5742.         moveq    #0,d2
  5743.         move.w    AlarmWinWidth(a4),d2
  5744.         move.w    AlarmWinHeight(a4),d3
  5745.         RELLIB    ComputeFont,_KCXBase
  5746.         move.l    -4(a5),a0
  5747.         move.l    d2,d0
  5748.         DOLIB    ComputeX
  5749.         move.l    d0,d4
  5750.         move.w    AlarmWinLeft(a4),d2
  5751.         move.l    -4(a5),a3
  5752.         move.w    sc_LeftEdge(a3),d5
  5753.         neg.w    d5
  5754.         add.w    d5,d2
  5755.         add.w    d2,d0
  5756.         add.w    OffX(a5),d0
  5757.         moveq    #0,d1
  5758.         move.b    sc_WBorRight(a0),d1
  5759.         add.w    d1,d0
  5760.         cmp.w    sc_Width(a0),d0
  5761.         bls.s    .WOk
  5762.         move.w    sc_Width(a0),d0
  5763.         sub.w    d4,d0
  5764.         move.w    d0,d2
  5765. .WOk        move.l    d3,d0
  5766.         DOLIB    ComputeY
  5767.         move.l    d0,d4
  5768.         move.w    AlarmWinTop(a4),d3
  5769.         move.l    -4(a5),a3
  5770.         move.w    sc_TopEdge(a3),d5
  5771.         neg.w    d5
  5772.         add.w    d5,d3
  5773.         add.w    d3,d0
  5774.         add.w    OffY(a5),d0
  5775.         moveq    #0,d1
  5776.         move.b    sc_WBorBottom(a0),d1
  5777.         add.w    d1,d0
  5778.         cmp.w    sc_Height(a0),d0
  5779.         bls.s    .HOk
  5780.         move.w    sc_Height(a0),d0
  5781.         sub.w    d4,d0
  5782.         move.w    d0,d3
  5783. .HOk        lea.l    AlarmGadget(a4),a0
  5784.         RELLIB    CreateContext,_GadToolsBase
  5785.         move.l    d0,a3
  5786.         beq    .AlarmWinError
  5787.  
  5788.         movem.l d2-d3/a4,-(sp)
  5789.         moveq    #0,d3
  5790.         lea.l    AlarmWinGTags,a4
  5791. .AlarmWinGL    lea.l    AlarmWinNGads,a0
  5792.         move.l    d3,d0
  5793.         mulu    #gng_SIZEOF,d0
  5794.         add.l    d0,a0
  5795.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  5796.         moveq    #gng_SIZEOF,d0
  5797.         CALLSYS    CopyMem
  5798.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  5799.         move.l    a4,-(sp)
  5800.         move.l    ZeroBase(pc),a4
  5801.         move.l    gng_GadgetText(a0),-(sp)
  5802.         bsr    GetLocStr
  5803.         move.l    (sp)+,d7
  5804.         move.l    d7,gng_GadgetText(a0)
  5805.         move.l    AlarmVisInfo(a4),gng_VisualInfo(a0)
  5806.         move.l    FontPtr(a5),gng_TextAttr(a0)
  5807.         move.w    gng_LeftEdge(a0),d0
  5808.         RELLIB    ComputeX,_KCXBase
  5809.         add.w    OffX(a5),d0
  5810.         move.w    d0,gng_LeftEdge(a0)
  5811.         move.w    gng_TopEdge(a0),d0
  5812.         DOLIB    ComputeY
  5813.         add.w    OffY(a5),d0
  5814.         move.w    d0,gng_TopEdge(a0)
  5815.         move.w    gng_Width(a0),d0
  5816.         DOLIB    ComputeX
  5817.         move.w    d0,gng_Width(a0)
  5818.         move.w    gng_Height(a0),d0
  5819.         DOLIB    ComputeY
  5820.         move.l    (sp)+,a4
  5821.         move.w    d0,gng_Height(a0)
  5822.         lea.l    AlarmWinGTypes,a0
  5823.         moveq    #0,d0
  5824.         move.l    d3,d1
  5825.         lsl.l    #1,d1
  5826.         move.w    0(a0,d1.w),d0
  5827.         move.l    a3,a0
  5828.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  5829.         move.l    a4,a2
  5830.         move.l    a4,-(sp)
  5831.         move.l    ZeroBase(pc),a4
  5832.         bsr    LocalizeGadTags
  5833.         RELLIB    CreateGadgetA,_GadToolsBase
  5834.         move.l    (sp)+,a4
  5835.         tst.l    d0
  5836.         beq    .AlarmWinError
  5837.         move.l    d0,a3
  5838.         move.l    d7,a0
  5839.         bsr    LocalizeGadKey
  5840.         move.l    d1,gg_UserData(a3)
  5841.         move.l    d0,a3
  5842.         move.l    d3,d0
  5843.         lsl.l    #2,d0
  5844.         move.l    a4,-(sp)
  5845.         move.l    ZeroBase(pc),a4
  5846.         lea.l    AlarmGads(a4),a0
  5847.         move.l    (sp)+,a4
  5848.         move.l    a3,0(a0,d0.w)
  5849. .AlarmWinTL    tst.l    (a4)
  5850.         beq.s    .AlarmWinDN
  5851.         addq.w    #8,a4
  5852.         bra.s    .AlarmWinTL
  5853. .AlarmWinDN    addq.w    #4,a4
  5854.         addq.w    #1,d3
  5855.         cmp.w    #AlarmWin_CNT,d3
  5856.         bmi    .AlarmWinGL
  5857.         movem.l (sp)+,d2-d3/a4
  5858.         move.l    AlarmGadget(a4),AlarmWinWG+4
  5859.  
  5860.         LOCLEA    AlarmTitle,AlarmWinWG+12
  5861.         LOCLEA    WindowScrTitle,AlarmWinWG+20
  5862.         move.l    -4(a5),AlarmWinSC+4        ; Open window
  5863.         ext.l    d2
  5864.         ext.l    d3
  5865.         move.l    d2,AlarmWinL+4
  5866.         move.l    d3,AlarmWinT+4
  5867.         move.l    -4(a5),a0
  5868.         move.w    AlarmWinWidth(a4),d0
  5869.         RELLIB    ComputeX,_KCXBase
  5870.         add.w    OffX(a5),d0
  5871.         moveq    #0,d1
  5872.         move.b    sc_WBorRight(a0),d1
  5873.         add.w    d1,d0
  5874.         move.l    d0,AlarmWinW+4
  5875.         move.w    AlarmWinHeight(a4),d0
  5876.         DOLIB    ComputeY
  5877.         add.w    OffY(a5),d0
  5878.         moveq    #0,d1
  5879.         move.b    sc_WBorBottom(a0),d1
  5880.         add.w    d1,d0
  5881.         move.l    d0,AlarmWinH+4
  5882.         suba.l    a0,a0
  5883.         lea.l    AlarmWinWindowTags,a1
  5884.         RELLIB    OpenWindowTagList,_IntuitionBase
  5885.         move.l    d0,AlarmHandle(a4)
  5886.         beq.s    .AlarmWinError
  5887.         move.l    d0,a0
  5888.         move.l    WindowPort(a4),wd_UserPort(a0)
  5889.         move.l    #ALARMWINIDCMP,d0
  5890.         DOLIB    ModifyIDCMP
  5891.  
  5892.         move.l    AlarmHandle(a4),a0
  5893.         suba.l    a1,a1
  5894.         RELLIB    GT_RefreshWindow,_GadToolsBase
  5895.  
  5896.         bsr.s    SetAlarmGads
  5897.         bsr    UnlockScreen
  5898.         unlk    a5
  5899.         rts
  5900. .AlarmWinError    bsr    CloseAlarmWin
  5901.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  5902.         bsr    DisplayError
  5903.         bsr    UnlockScreen
  5904.         unlk    a5
  5905.         rts
  5906.  
  5907.  
  5908. **********************************************************************
  5909. *                  Set gadgets within alarm window                   *
  5910. **********************************************************************
  5911. SetAlarmGads    move.b    DoAlarm(a4),d0
  5912.         move.l    #GD_AlarmOn,d1
  5913.         bsr    SetAlarmBox
  5914.  
  5915.         move.b    EveryHour(a4),d0
  5916.         move.l    #GD_AllHours,d1
  5917.         bsr.s    SetAlarmBox
  5918.  
  5919.         move.b    DoShowAlarm(a4),d0
  5920.         move.l    #GD_ShowAlarm,d1
  5921.         bsr.s    SetAlarmBox
  5922.  
  5923.         move.l    #GD_AlarmTime,d0
  5924.         move.l    AlarmTime(a4),d1
  5925.         lea    AlarmGads(a4),a0
  5926.         move.l    AlarmHandle(a4),a1
  5927.         RELLIB    SetSliderGad,_KCXBase
  5928.  
  5929.         move.l    #GD_AlSoundType,d0
  5930.         moveq    #0,d1
  5931.         move.b    AlarmSample(a4),d1
  5932.         lea    AlarmGads(a4),a0
  5933.         move.l    AlarmHandle(a4),a1
  5934.         RELLIB    SetCycleGad,_KCXBase
  5935.  
  5936.         move.l    #GD_AlarmSample,d0
  5937.         bchg    #0,d1
  5938.         RELLIB    GhostGadget,_KCXBase
  5939.  
  5940.         move.l    #GD_TestSample,d0
  5941.         RELLIB    GhostGadget,_KCXBase
  5942.  
  5943.         move.l    #GD_SampleName,d0
  5944.         lea    AlarmGads(a4),a0
  5945.         move.l    AlarmHandle(a4),a1
  5946.         lea    AlSampleName(a4),a2
  5947.         RELLIB    SetTextGad,_KCXBase
  5948.         rts
  5949. SetAlarmBox    lea    AlarmGads(a4),a0
  5950.         move.l    AlarmHandle(a4),a1
  5951.         RELLIB    SetCheckBox,_KCXBase
  5952.         rts
  5953.  
  5954. **********************************************************************
  5955. *                         Close alarm window                         *
  5956. **********************************************************************
  5957. CloseAlarmWin    lea    AlarmHandle(a4),a3
  5958.         bra    CloseAWindow
  5959.  
  5960.  
  5961.  
  5962. **********************************************************************
  5963. *                   Open the cycle settings window                   *
  5964. **********************************************************************
  5965. OpenCycleWin    tst.l    CycleHandle(a4)
  5966.         beq.s    .GoOn
  5967.         move.l    CycleHandle(a4),a0
  5968.         RELLIB    WindowToFront,_IntuitionBase
  5969.         rts
  5970. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  5971.         lea    CycleTxt(a4),a0
  5972.         move.l    a0,FontPtr(a5)
  5973.         bsr    LockScreen
  5974.         tst.l    d0
  5975.         beq    .CycleWinError
  5976.         moveq    #0,d2
  5977.         moveq    #0,d3
  5978.         RELLIB    ComputeFont,_KCXBase
  5979.         move.l    -4(a5),a0
  5980.         sub.l    a1,a1
  5981.         RELLIB    GetVisualInfoA,_GadToolsBase
  5982.         move.l    d0,CycleVisInfo(a4)
  5983.         beq    .CycleWinError
  5984.  
  5985.         move.l    -4(a5),a0
  5986.         moveq    #0,d3
  5987.         moveq    #0,d2
  5988.         move.w    CycleWinWidth(a4),d2
  5989.         move.w    CycleWinHeight(a4),d3
  5990.         RELLIB    ComputeFont,_KCXBase
  5991.         move.l    -4(a5),a0
  5992.         move.l    d2,d0
  5993.         DOLIB    ComputeX
  5994.         move.l    d0,d4
  5995.         move.w    CycleWinLeft(a4),d2
  5996.         move.l    -4(a5),a3
  5997.         move.w    sc_LeftEdge(a3),d5
  5998.         neg.w    d5
  5999.         add.w    d5,d2
  6000.         add.w    d2,d0
  6001.         add.w    OffX(a5),d0
  6002.         moveq    #0,d1
  6003.         move.b    sc_WBorRight(a0),d1
  6004.         add.w    d1,d0
  6005.         cmp.w    sc_Width(a0),d0
  6006.         bls.s    .WOk
  6007.         move.w    sc_Width(a0),d0
  6008.         sub.w    d4,d0
  6009.         move.w    d0,d2
  6010. .WOk        move.l    d3,d0
  6011.         DOLIB    ComputeY
  6012.         move.l    d0,d4
  6013.         move.w    CycleWinTop(a4),d3
  6014.         move.l    -4(a5),a3
  6015.         move.w    sc_TopEdge(a3),d5
  6016.         neg.w    d5
  6017.         add.w    d5,d3
  6018.         add.w    d3,d0
  6019.         add.w    OffY(a5),d0
  6020.         moveq    #0,d1
  6021.         move.b    sc_WBorBottom(a0),d1
  6022.         add.w    d1,d0
  6023.         cmp.w    sc_Height(a0),d0
  6024.         bls.s    .HOk
  6025.         move.w    sc_Height(a0),d0
  6026.         sub.w    d4,d0
  6027.         move.w    d0,d3
  6028. .HOk        lea.l    CycleGadget(a4),a0
  6029.         RELLIB    CreateContext,_GadToolsBase
  6030.         move.l    d0,a3
  6031.         beq    .CycleWinError
  6032.  
  6033.         movem.l d2-d3/a4,-(sp)
  6034.         moveq    #0,d3
  6035.         lea.l    CycleWinGTags,a4
  6036. .CycleWinGL    lea.l    CycleWinNGads,a0
  6037.         move.l    d3,d0
  6038.         mulu    #gng_SIZEOF,d0
  6039.         add.l    d0,a0
  6040.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  6041.         moveq    #gng_SIZEOF,d0
  6042.         CALLSYS    CopyMem
  6043.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  6044.         move.l    a4,-(sp)
  6045.         move.l    ZeroBase(pc),a4
  6046.         move.l    gng_GadgetText(a0),-(sp)
  6047.         bsr    GetLocStr
  6048.         move.l    (sp)+,d7
  6049.         move.l    d7,gng_GadgetText(a0)
  6050.         move.l    CycleVisInfo(a4),gng_VisualInfo(a0)
  6051.         move.l    FontPtr(a5),gng_TextAttr(a0)
  6052.         move.w    gng_LeftEdge(a0),d0
  6053.         RELLIB    ComputeX,_KCXBase
  6054.         add.w    OffX(a5),d0
  6055.         move.w    d0,gng_LeftEdge(a0)
  6056.         move.w    gng_TopEdge(a0),d0
  6057.         DOLIB    ComputeY
  6058.         add.w    OffY(a5),d0
  6059.         move.w    d0,gng_TopEdge(a0)
  6060.         move.w    gng_Width(a0),d0
  6061.         DOLIB    ComputeX
  6062.         move.w    d0,gng_Width(a0)
  6063.         move.w    gng_Height(a0),d0
  6064.         DOLIB    ComputeY
  6065.         move.l    (sp)+,a4
  6066.         move.w    d0,gng_Height(a0)
  6067.         lea.l    CycleWinGTypes,a0
  6068.         moveq    #0,d0
  6069.         move.l    d3,d1
  6070.         lsl.l    #1,d1
  6071.         move.w    0(a0,d1.w),d0
  6072.         move.l    a3,a0
  6073.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  6074.         move.l    a4,a2
  6075.         move.l    a4,-(sp)
  6076.         move.l    ZeroBase(pc),a4
  6077.         RELLIB    CreateGadgetA,_GadToolsBase
  6078.         move.l    (sp)+,a4
  6079.         tst.l    d0
  6080.         beq    .CycleWinError
  6081.         move.l    d0,a3
  6082.         move.l    d7,a0
  6083.         bsr    LocalizeGadKey
  6084.         move.l    d1,gg_UserData(a3)
  6085.         move.l    d3,d0
  6086.         lsl.l    #2,d0
  6087.         move.l    a4,-(sp)
  6088.         move.l    ZeroBase(pc),a4
  6089.         lea.l    CycleGads(a4),a0
  6090.         move.l    (sp)+,a4
  6091.         move.l    a3,0(a0,d0.w)
  6092. .CycleWinTL    tst.l    (a4)
  6093.         beq.s    .CycleWinDN
  6094.         addq.w    #8,a4
  6095.         bra.s    .CycleWinTL
  6096. .CycleWinDN    addq.w    #4,a4
  6097.         addq.w    #1,d3
  6098.         cmp.w    #CycleWin_CNT,d3
  6099.         bmi    .CycleWinGL
  6100.         movem.l (sp)+,d2-d3/a4
  6101.         move.l    CycleGadget(a4),CycleWinWG+4
  6102.  
  6103.         LOCLEA    CycleTitle,CycleWinWG+12
  6104.         LOCLEA    WindowScrTitle,CycleWinWG+20
  6105.         move.l    -4(a5),CycleWinSC+4        ; Open window
  6106.         ext.l    d2
  6107.         ext.l    d3
  6108.         move.l    d2,CycleWinL+4
  6109.         move.l    d3,CycleWinT+4
  6110.         move.l    -4(a5),a0
  6111.         move.w    CycleWinWidth(a4),d0
  6112.         RELLIB    ComputeX,_KCXBase
  6113.         add.w    OffX(a5),d0
  6114.         moveq    #0,d1
  6115.         move.b    sc_WBorRight(a0),d1
  6116.         add.w    d1,d0
  6117.         move.l    d0,CycleWinW+4
  6118.         move.w    CycleWinHeight(a4),d0
  6119.         DOLIB    ComputeY
  6120.         add.w    OffY(a5),d0
  6121.         moveq    #0,d1
  6122.         move.b    sc_WBorBottom(a0),d1
  6123.         add.w    d1,d0
  6124.         move.l    d0,CycleWinH+4
  6125.         suba.l    a0,a0
  6126.         lea.l    CycleWinWindowTags,a1
  6127.         RELLIB    OpenWindowTagList,_IntuitionBase
  6128.         move.l    d0,CycleHandle(a4)
  6129.         beq.s    .CycleWinError
  6130.         move.l    d0,a0
  6131.         move.l    WindowPort(a4),wd_UserPort(a0)
  6132.         move.l    #CYCLEWINIDCMP,d0
  6133.         DOLIB    ModifyIDCMP
  6134.  
  6135.         move.l    CycleHandle(a4),a0
  6136.         suba.l    a1,a1
  6137.         RELLIB    GT_RefreshWindow,_GadToolsBase
  6138.  
  6139.         bsr.s    SetCycleGads
  6140.         bsr    UnlockScreen
  6141.         unlk    a5
  6142.         rts
  6143. .CycleWinError    bsr    CloseCycleWin
  6144.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  6145.         bsr    DisplayError
  6146.         bsr    UnlockScreen
  6147.         unlk    a5
  6148.         rts
  6149.  
  6150.  
  6151. **********************************************************************
  6152. *                       Set all cycle gadgets                        *
  6153. **********************************************************************
  6154. SetCycleGads    bsr.s    SetCycleSlids
  6155.         bsr.s    SetCycleQuals
  6156.         move.b    CycleWin(a4),d0
  6157.         move.l    #GD_CycleOn,d1
  6158.         lea    CycleGads(a4),a0
  6159.         move.l    CycleHandle(a4),a1
  6160.         RELLIB    SetCheckBox,_KCXBase
  6161.         tst.b    CycleWin(a4)
  6162.         bne.s    .GoOn
  6163.         moveq    #1,d1
  6164.         move.l    #GD_FrontClick,d0
  6165.         DOLIB    GhostGadget
  6166.         move.l    #GD_BackClick,d0
  6167.         DOLIB    GhostGadget
  6168.         move.l    #GD_MiddleClick,d0
  6169.         DOLIB    GhostGadget
  6170. .GoOn        rts
  6171. **********************************************************************
  6172. *                    Set sliders of cycle window                     *
  6173. **********************************************************************
  6174. SetCycleSlids    moveq    #0,d1
  6175.  
  6176.         move.l    #GD_FrontClick,d0
  6177.         move.w    FrontClicks(a4),d1
  6178.         bsr.s    SetCycleSlider
  6179.  
  6180.         move.l    #GD_MiddleClick,d0
  6181.         move.w    MiddleClicks(a4),d1
  6182.         bsr.s    SetCycleSlider
  6183.  
  6184.         move.l    #GD_BackClick,d0
  6185.         move.w    BackClicks(a4),d1
  6186.         bsr.s    SetCycleSlider
  6187.         rts
  6188. SetCycleSlider    lea    CycleGads(a4),a0
  6189.         move.l    CycleHandle(a4),a1
  6190.         RELLIB    SetSliderGad,_KCXBase
  6191.         rts
  6192. **********************************************************************
  6193. *                   Display all cycling qualifiers                   *
  6194. **********************************************************************
  6195. SetCycleQuals    move.w    FrontCode(a4),d0
  6196.         move.w    FrontQual(a4),d1
  6197.         move.l    #GD_FrontQual,d2
  6198.         lea    FrontQualStr(a4),a2
  6199.         bsr.s    SetCycleText
  6200.  
  6201.         move.w    #IECODE_MBUTTON,d0
  6202.         move.w    MiddleQual(a4),d1
  6203.         move.l    #GD_MiddleQual,d2
  6204.         lea    MiddleQualStr(a4),a2
  6205.         bsr.s    SetCycleText
  6206.  
  6207.         move.w    BackCode(a4),d0
  6208.         move.w    BackQual(a4),d1
  6209.         move.l    #GD_BackQual,d2
  6210.         lea    BackQualStr(a4),a2
  6211.         bsr.s    SetCycleText
  6212.         rts
  6213. SetCycleText    lea    CycleGads(a4),a0
  6214.         move.l    CycleHandle(a4),a1
  6215.         bra    DisplayHotKey
  6216.  
  6217.  
  6218.  
  6219. **********************************************************************
  6220. *                      Close Cycle window again                      *
  6221. **********************************************************************
  6222. CloseCycleWin    lea    CycleHandle(a4),a3
  6223.         bra    CloseAWindow
  6224.  
  6225.  
  6226.  
  6227.  
  6228. **********************************************************************
  6229. *                        Open Blanking window                        *
  6230. **********************************************************************
  6231. OpenBlankWin    tst.l    BlankHandle(a4)
  6232.         beq.s    .GoOn
  6233.         move.l    BlankHandle(a4),a0
  6234.         RELLIB    WindowToFront,_IntuitionBase
  6235.         rts
  6236. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  6237.         lea    BlankTxt(a4),a0
  6238.         move.l    a0,FontPtr(a5)
  6239.         bsr    LockScreen
  6240.         tst.l    d0
  6241.         beq    .BlankWinError
  6242.         moveq    #0,d2
  6243.         moveq    #0,d3
  6244.         RELLIB    ComputeFont,_KCXBase
  6245.         move.l    -4(a5),a0
  6246.         sub.l    a1,a1
  6247.         RELLIB    GetVisualInfoA,_GadToolsBase
  6248.         move.l    d0,BlankVisInfo(a4)
  6249.         beq    .BlankWinError
  6250.  
  6251.         move.l    -4(a5),a0
  6252.         moveq    #0,d3
  6253.         moveq    #0,d2
  6254.         move.w    BlankWinWidth(a4),d2
  6255.         move.w    BlankWinHeight(a4),d3
  6256.         RELLIB    ComputeFont,_KCXBase
  6257.         move.l    -4(a5),a0
  6258.         move.l    d2,d0
  6259.         DOLIB    ComputeX
  6260.         move.l    d0,d4
  6261.         move.w    BlankWinLeft(a4),d2
  6262.         move.l    -4(a5),a3
  6263.         move.w    sc_LeftEdge(a3),d5
  6264.         neg.w    d5
  6265.         add.w    d5,d2
  6266.         add.w    d2,d0
  6267.         add.w    OffX(a5),d0
  6268.         moveq    #0,d1
  6269.         move.b    sc_WBorRight(a0),d1
  6270.         add.w    d1,d0
  6271.         cmp.w    sc_Width(a0),d0
  6272.         bls.s    .WOk
  6273.         move.w    sc_Width(a0),d0
  6274.         sub.w    d4,d0
  6275.         move.w    d0,d2
  6276. .WOk        move.l    d3,d0
  6277.         DOLIB    ComputeY
  6278.         move.l    d0,d4
  6279.         move.w    BlankWinTop(a4),d3
  6280.         move.l    -4(a5),a3
  6281.         move.w    sc_TopEdge(a3),d5
  6282.         neg.w    d5
  6283.         add.w    d5,d3
  6284.         add.w    d3,d0
  6285.         add.w    OffY(a5),d0
  6286.         moveq    #0,d1
  6287.         move.b    sc_WBorBottom(a0),d1
  6288.         add.w    d1,d0
  6289.         cmp.w    sc_Height(a0),d0
  6290.         bls.s    .HOk
  6291.         move.w    sc_Height(a0),d0
  6292.         sub.w    d4,d0
  6293.         move.w    d0,d3
  6294. .HOk        lea.l    BlankGadget(a4),a0
  6295.         RELLIB    CreateContext,_GadToolsBase
  6296.         move.l    d0,a3
  6297.         beq    .BlankWinError
  6298.  
  6299.         movem.l d2-d3/a4,-(sp)
  6300.         moveq    #0,d3
  6301.         lea.l    BlankWinGTags,a4
  6302. .BlankWinGL    lea.l    BlankWinNGads,a0
  6303.         move.l    d3,d0
  6304.         mulu    #gng_SIZEOF,d0
  6305.         add.l    d0,a0
  6306.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  6307.         moveq    #gng_SIZEOF,d0
  6308.         CALLSYS    CopyMem
  6309.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  6310.         move.l    a4,-(sp)
  6311.         move.l    ZeroBase(pc),a4
  6312.         move.l    gng_GadgetText(a0),-(sp)
  6313.         bsr    GetLocStr
  6314.         move.l    (sp)+,d7
  6315.         move.l    d7,gng_GadgetText(a0)
  6316.         move.l    BlankVisInfo(a4),gng_VisualInfo(a0)
  6317.         move.l    FontPtr(a5),gng_TextAttr(a0)
  6318.         move.w    gng_LeftEdge(a0),d0
  6319.         RELLIB    ComputeX,_KCXBase
  6320.         add.w    OffX(a5),d0
  6321.         move.w    d0,gng_LeftEdge(a0)
  6322.         move.w    gng_TopEdge(a0),d0
  6323.         DOLIB    ComputeY
  6324.         add.w    OffY(a5),d0
  6325.         move.w    d0,gng_TopEdge(a0)
  6326.         move.w    gng_Width(a0),d0
  6327.         DOLIB    ComputeX
  6328.         move.w    d0,gng_Width(a0)
  6329.         move.w    gng_Height(a0),d0
  6330.         DOLIB    ComputeY
  6331.         move.l    (sp)+,a4
  6332.         move.w    d0,gng_Height(a0)
  6333.         lea.l    BlankWinGTypes,a0
  6334.         moveq    #0,d0
  6335.         move.l    d3,d1
  6336.         lsl.l    #1,d1
  6337.         move.w    0(a0,d1.w),d0
  6338.         move.l    a3,a0
  6339.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  6340.         move.l    a4,a2
  6341.         move.l    a4,-(sp)
  6342.         move.l    ZeroBase(pc),a4
  6343.         bsr    LocalizeGadTags
  6344.         RELLIB    CreateGadgetA,_GadToolsBase
  6345.         move.l    (sp)+,a4
  6346.         tst.l    d0
  6347.         beq    .BlankWinError
  6348.         move.l    d0,a3
  6349.         move.l    d7,a0
  6350.         bsr    LocalizeGadKey
  6351.         move.l    d1,gg_UserData(a3)
  6352.         move.l    d3,d0
  6353.         lsl.l    #2,d0
  6354.         move.l    a4,-(sp)
  6355.         move.l    ZeroBase(pc),a4
  6356.         lea.l    BlankGads(a4),a0
  6357.         move.l    (sp)+,a4
  6358.         move.l    a3,0(a0,d0.w)
  6359. .BlankWinTL    tst.l    (a4)
  6360.         beq.s    .BlankWinDN
  6361.         addq.w    #8,a4
  6362.         bra.s    .BlankWinTL
  6363. .BlankWinDN    addq.w    #4,a4
  6364.         addq.w    #1,d3
  6365.         cmp.w    #BlankWin_CNT,d3
  6366.         bmi    .BlankWinGL
  6367.         movem.l (sp)+,d2-d3/a4
  6368.         move.l    BlankGadget(a4),BlankWinWG+4
  6369.  
  6370.         LOCLEA    BlankTitle,BlankWinWG+12
  6371.         LOCLEA    WindowScrTitle,BlankWinWG+20
  6372.         move.l    -4(a5),BlankWinSC+4        ; Open window
  6373.         ext.l    d2
  6374.         ext.l    d3
  6375.         move.l    d2,BlankWinL+4
  6376.         move.l    d3,BlankWinT+4
  6377.         move.l    -4(a5),a0
  6378.         move.w    BlankWinWidth(a4),d0
  6379.         RELLIB    ComputeX,_KCXBase
  6380.         add.w    OffX(a5),d0
  6381.         moveq    #0,d1
  6382.         move.b    sc_WBorRight(a0),d1
  6383.         add.w    d1,d0
  6384.         move.l    d0,BlankWinW+4
  6385.         move.w    BlankWinHeight(a4),d0
  6386.         DOLIB    ComputeY
  6387.         add.w    OffY(a5),d0
  6388.         moveq    #0,d1
  6389.         move.b    sc_WBorBottom(a0),d1
  6390.         add.w    d1,d0
  6391.         move.l    d0,BlankWinH+4
  6392.         suba.l    a0,a0
  6393.         lea.l    BlankWinWindowTags,a1
  6394.         RELLIB    OpenWindowTagList,_IntuitionBase
  6395.         move.l    d0,BlankHandle(a4)
  6396.         beq.s    .BlankWinError
  6397.         move.l    d0,a0
  6398.         move.l    WindowPort(a4),wd_UserPort(a0)
  6399.         move.l    #BLANKWINIDCMP,d0
  6400.         DOLIB    ModifyIDCMP
  6401.  
  6402.         move.l    BlankHandle(a4),a0
  6403.         suba.l    a1,a1
  6404.         RELLIB    GT_RefreshWindow,_GadToolsBase
  6405.  
  6406.         bsr.s    SetBlankGads
  6407.         bsr    UnlockScreen
  6408.         unlk    a5
  6409.         rts
  6410. .BlankWinError    bsr    CloseBlankWin
  6411.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  6412.         bsr    DisplayError
  6413.         bsr    UnlockScreen
  6414.         unlk    a5
  6415.         rts
  6416.  
  6417.  
  6418. **********************************************************************
  6419. *                Set all gadgets within blank window                 *
  6420. **********************************************************************
  6421. SetBlankGads    move.b    MouseEver(a4),d0
  6422.         move.l    #GD_BlankMouse,d1
  6423.         lea    BlankGads(a4),a0
  6424.         move.l    BlankHandle(a4),a1
  6425.         RELLIB    SetCheckBox,_KCXBase
  6426.  
  6427.         move.l    #GD_ScrTime,d0
  6428.         move.l    ScreenTime(a4),d1
  6429.         bsr.s    SetBlankSlid
  6430.  
  6431.         move.l    #GD_MouseTime,d0
  6432.         move.l    MouseTime(a4),d1
  6433.         bsr.s    SetBlankSlid
  6434.  
  6435.         move.l    #GD_DimmFac,d0
  6436.         move.l    DimmValue(a4),d1
  6437.         bsr.s    SetBlankSlid
  6438.  
  6439.         move.l    #GD_BlankType,d0
  6440.         moveq    #0,d1
  6441.         move.b    ScreenDimm(a4),d1
  6442.         lea    BlankGads(a4),a0
  6443.         move.l    BlankHandle(a4),a1
  6444.         RELLIB    SetCycleGad,_KCXBase
  6445.  
  6446.         move.l    #GD_DimmFac,d0
  6447.         moveq    #0,d1
  6448.         move.b    ScreenDimm(a4),d1
  6449.         bchg    #0,d1
  6450.         lea    BlankGads(a4),a0
  6451.         move.l    BlankHandle(a4),a1
  6452.         RELLIB    GhostGadget,_KCXBase
  6453.         rts
  6454. SetBlankSlid    lea    BlankGads(a4),a0
  6455.         move.l    BlankHandle(a4),a1
  6456.         RELLIB    SetSliderGad,_KCXBase
  6457.         rts
  6458.  
  6459. **********************************************************************
  6460. *                     Close the blanking window                      *
  6461. **********************************************************************
  6462. CloseBlankWin    lea    BlankHandle(a4),a3
  6463.         bra    CloseAWindow
  6464.  
  6465.  
  6466.  
  6467. **********************************************************************
  6468. *                       Open Clock Def windows                       *
  6469. **********************************************************************
  6470. OpenClockDefWin    tst.l    ClockDefHandle(a4)
  6471.         beq.s    .GoOn
  6472.         move.l    ClockDefHandle(a4),a0
  6473.         RELLIB    WindowToFront,_IntuitionBase
  6474.         rts
  6475. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  6476.         lea    ClockDefTxt(a4),a0
  6477.         move.l    a0,FontPtr(a5)
  6478.         bsr    LockScreen
  6479.         tst.l    d0
  6480.         beq    .ClockDefWinError
  6481.         move.l    d0,a0
  6482.         move.l    sc_RastPort+rp_BitMap(a0),a0
  6483.         moveq    #0,d7
  6484.         move.b    bm_Depth(a0),d7
  6485.         cmp.w    #4,d7
  6486.         ble.s    .NormalCols
  6487.         moveq    #4,d7
  6488. .NormalCols    move.l    d7,ScrDepth1+4
  6489.         move.l    d7,ScrDepth2+4
  6490.         move.l    d7,ScrDepth3+4
  6491.         move.l    d7,ScrDepth4+4
  6492.  
  6493.         moveq    #0,d2
  6494.         moveq    #0,d3
  6495.         RELLIB    ComputeFont,_KCXBase
  6496.         move.l    -4(a5),a0
  6497.         sub.l    a1,a1
  6498.         RELLIB    GetVisualInfoA,_GadToolsBase
  6499.         move.l    d0,ClockDefVisInfo(a4)
  6500.         beq    .ClockDefWinError
  6501.  
  6502.         move.l    -4(a5),a0
  6503.         moveq    #0,d3
  6504.         moveq    #0,d2
  6505.         move.w    ClockDefWinWidth(a4),d2
  6506.         move.w    ClockDefWinHeight(a4),d3
  6507.         RELLIB    ComputeFont,_KCXBase
  6508.         move.l    -4(a5),a0
  6509.         move.l    d2,d0
  6510.         DOLIB    ComputeX
  6511.         move.l    d0,d4
  6512.         move.w    ClockDefWinLeft(a4),d2
  6513.         move.l    -4(a5),a3
  6514.         move.w    sc_LeftEdge(a3),d5
  6515.         neg.w    d5
  6516.         add.w    d5,d2
  6517.         add.w    d2,d0
  6518.         add.w    OffX(a5),d0
  6519.         moveq    #0,d1
  6520.         move.b    sc_WBorRight(a0),d1
  6521.         add.w    d1,d0
  6522.         cmp.w    sc_Width(a0),d0
  6523.         bls.s    .WOk
  6524.         move.w    sc_Width(a0),d0
  6525.         sub.w    d4,d0
  6526.         move.w    d0,d2
  6527. .WOk        move.l    d3,d0
  6528.         DOLIB    ComputeY
  6529.         move.l    d0,d4
  6530.         move.w    ClockDefWinTop(a4),d3
  6531.         move.l    -4(a5),a3
  6532.         move.w    sc_TopEdge(a3),d5
  6533.         neg.w    d5
  6534.         add.w    d5,d3
  6535.         add.w    d3,d0
  6536.         add.w    OffY(a5),d0
  6537.         moveq    #0,d1
  6538.         move.b    sc_WBorBottom(a0),d1
  6539.         add.w    d1,d0
  6540.         cmp.w    sc_Height(a0),d0
  6541.         bls.s    .HOk
  6542.         move.w    sc_Height(a0),d0
  6543.         sub.w    d4,d0
  6544.         move.w    d0,d3
  6545. .HOk        lea.l    ClockDefGadget(a4),a0
  6546.         RELLIB    CreateContext,_GadToolsBase
  6547.         move.l    d0,a3
  6548.         beq    .ClockDefWinError
  6549.  
  6550.         movem.l d2-d3/a4,-(sp)
  6551.         moveq    #0,d3
  6552.         lea.l    ClockDefWinGTags,a4
  6553. .ClockDefWinGL    lea.l    ClockDefWinNGads,a0
  6554.         move.l    d3,d0
  6555.         mulu    #gng_SIZEOF,d0
  6556.         add.l    d0,a0
  6557.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  6558.         moveq    #gng_SIZEOF,d0
  6559.         CALLSYS    CopyMem
  6560.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  6561.         move.l    a4,-(sp)
  6562.         move.l    ZeroBase(pc),a4
  6563.         move.l    gng_GadgetText(a0),-(sp)
  6564.         bsr    GetLocStr
  6565.         move.l    (sp)+,d7
  6566.         move.l    d7,gng_GadgetText(a0)
  6567.         move.l    ClockDefVisInfo(a4),gng_VisualInfo(a0)
  6568.         move.l    FontPtr(a5),gng_TextAttr(a0)
  6569.         move.w    gng_LeftEdge(a0),d0
  6570.         RELLIB    ComputeX,_KCXBase
  6571.         add.w    OffX(a5),d0
  6572.         move.w    d0,gng_LeftEdge(a0)
  6573.         move.w    gng_TopEdge(a0),d0
  6574.         DOLIB    ComputeY
  6575.         add.w    OffY(a5),d0
  6576.         move.w    d0,gng_TopEdge(a0)
  6577.         move.w    gng_Width(a0),d0
  6578.         DOLIB    ComputeX
  6579.         move.w    d0,gng_Width(a0)
  6580.         move.w    gng_Height(a0),d0
  6581.         DOLIB    ComputeY
  6582.         move.l    (sp)+,a4
  6583.         move.w    d0,gng_Height(a0)
  6584.         lea.l    ClockDefWinGTypes,a0
  6585.         moveq    #0,d0
  6586.         move.l    d3,d1
  6587.         lsl.l    #1,d1
  6588.         move.w    0(a0,d1.w),d0
  6589.         move.l    a3,a0
  6590.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  6591.         move.l    a4,a2
  6592.         move.l    a4,-(sp)
  6593.         move.l    ZeroBase(pc),a4
  6594.         bsr    LocalizeGadTags
  6595.         RELLIB    CreateGadgetA,_GadToolsBase
  6596.         move.l    (sp)+,a4
  6597.         tst.l    d0
  6598.         beq    .ClockDefWinError
  6599.         move.l    d0,a3
  6600.         move.l    d7,a0
  6601.         bsr    LocalizeGadKey
  6602.         move.l    d1,gg_UserData(a3)
  6603.         move.l    d3,d0
  6604.         lsl.l    #2,d0
  6605.         move.l    a4,-(sp)
  6606.         move.l    ZeroBase(pc),a4
  6607.         lea.l    ClockDefGads(a4),a0
  6608.         move.l    (sp)+,a4
  6609.         move.l    a3,0(a0,d0.w)
  6610. .ClockDefWinTL    tst.l    (a4)
  6611.         beq.s    .ClockDefWinDN
  6612.         addq.w    #8,a4
  6613.         bra.s    .ClockDefWinTL
  6614. .ClockDefWinDN    addq.w    #4,a4
  6615.         addq.w    #1,d3
  6616.         cmp.w    #ClockDefWin_CNT,d3
  6617.         bmi    .ClockDefWinGL
  6618.         movem.l (sp)+,d2-d3/a4
  6619.         move.l    ClockDefGadget(a4),ClockDefWinWG+4
  6620.  
  6621.         LOCLEA    ClockDefWinWTitle,ClockDefWinWG+12
  6622.         LOCLEA    WindowScrTitle,ClockDefWinWG+20
  6623.         move.l    -4(a5),ClockDefWinSC+4        ; Open window
  6624.         ext.l    d2
  6625.         ext.l    d3
  6626.         move.l    d2,ClockDefWinL+4
  6627.         move.l    d3,ClockDefWinT+4
  6628.         move.l    -4(a5),a0
  6629.         move.w    ClockDefWinWidth(a4),d0
  6630.         RELLIB    ComputeX,_KCXBase
  6631.         add.w    OffX(a5),d0
  6632.         moveq    #0,d1
  6633.         move.b    sc_WBorRight(a0),d1
  6634.         add.w    d1,d0
  6635.         move.l    d0,ClockDefWinW+4
  6636.         move.w    ClockDefWinHeight(a4),d0
  6637.         DOLIB    ComputeY
  6638.         add.w    OffY(a5),d0
  6639.         moveq    #0,d1
  6640.         move.b    sc_WBorBottom(a0),d1
  6641.         add.w    d1,d0
  6642.         move.l    d0,ClockDefWinH+4
  6643.         suba.l    a0,a0
  6644.         lea.l    ClockDefWinWindowTags,a1
  6645.         RELLIB    OpenWindowTagList,_IntuitionBase
  6646.         move.l    d0,ClockDefHandle(a4)
  6647.         beq.s    .ClockDefWinError
  6648.         move.l    d0,a0
  6649.         move.l    WindowPort(a4),wd_UserPort(a0)
  6650.         move.l    #CLOCKDEFWINIDCMP,d0
  6651.         DOLIB    ModifyIDCMP
  6652.  
  6653.         bsr.s    SetClockDefGads
  6654.  
  6655.         move.l    ClockDefHandle(a4),a0
  6656.         suba.l    a1,a1
  6657.         RELLIB    GT_RefreshWindow,_GadToolsBase
  6658.  
  6659.         bsr    UnlockScreen
  6660.         unlk    a5
  6661.         rts
  6662. .ClockDefWinError
  6663.         bsr    CloseClockDefWin
  6664.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  6665.         bsr    DisplayError
  6666.         bsr    UnlockScreen
  6667.         unlk    a5
  6668.         rts
  6669.  
  6670.  
  6671. **********************************************************************
  6672. *                        Set Clock Def gadgets                       *
  6673. **********************************************************************
  6674. SetClockDefGads    move.b    ShowClock(a4),d0
  6675.         move.l    #GD_Display,d1
  6676.         bsr    SetClockDefBox
  6677.         move.b    DoShowTime(a4),d0
  6678.         move.l    #GD_ShowTime,d1
  6679.         bsr    SetClockDefBox
  6680.         move.b    ClockWin(a4),d0
  6681.         move.l    #GD_DisplayWin,d1
  6682.         bsr    SetClockDefBox
  6683.         move.b    ShowDate(a4),d0
  6684.         move.l    #GD_ShowDate,d1
  6685.         bsr    SetClockDefBox
  6686.         move.b    ShowDay(a4),d0
  6687.         move.l    #GD_ShowDay,d1
  6688.         bsr    SetClockDefBox
  6689.         move.b    ShowSecs(a4),d0
  6690.         move.l    #GD_ShowSecs,d1
  6691.         bsr.s    SetClockDefBox
  6692.         move.b    ShortDay(a4),d0
  6693.         move.l    #GD_ShortDay,d1
  6694.         bsr.s    SetClockDefBox
  6695.  
  6696.         move.l    #GD_DateFormat,d0
  6697.         move.w    DateFormat(a4),d1
  6698.         DOLIB    SetCycleGad
  6699.  
  6700.         move.l    #GD_GaugeWidth,d0
  6701.         move.l    MaxBarLen(a4),d1
  6702.         DOLIB    SetSliderGad
  6703.  
  6704.         move.b    ShowMouse(a4),d0
  6705.         move.l    #GD_ShowMouse,d1
  6706.         bsr.s    SetClockDefBox
  6707.         move.l    #GD_TFrontPen,d0
  6708.         move.l    TextFrontPen(a4),d1
  6709.         bsr.s    SetClockDefPal
  6710.         move.l    #GD_TBackPen,d0
  6711.         move.l    TextBackPen(a4),d1
  6712.         bsr.s    SetClockDefPal
  6713.         move.l    #GD_GFrontPen,d0
  6714.         move.l    GaugeFrontPen(a4),d1
  6715.         bsr.s    SetClockDefPal
  6716.         move.l    #GD_GBackPen,d0
  6717.         move.l    GaugeBackPen(a4),d1
  6718.         bsr.s    SetClockDefPal
  6719.         rts
  6720. SetClockDefPal    lea    ClockDefGads(a4),a0
  6721.         move.l    ClockDefHandle(a4),a1
  6722.         RELLIB    SetPaletteGad,_KCXBase
  6723.         rts
  6724. SetClockDefBox    lea    ClockDefGads(a4),a0
  6725.         move.l    ClockDefHandle(a4),a1
  6726.         RELLIB    SetCheckBox,_KCXBase
  6727.         rts
  6728.  
  6729.  
  6730. **********************************************************************
  6731. *                     Close the Clock Def window                     *
  6732. **********************************************************************
  6733. CloseClockDefWin
  6734.         CALLSYS    Forbid
  6735.         lea    ClockDefHandle(a4),a3
  6736.         bsr    CloseAWindow
  6737.         CALLSYS    Permit
  6738.         rts
  6739.  
  6740.  
  6741. **********************************************************************
  6742. *                         Open mouse window                          *
  6743. **********************************************************************
  6744. OpenMouseWin    tst.l    MouseHandle(a4)
  6745.         beq.s    .GoOn
  6746.         move.l    MouseHandle(a4),a0
  6747.         RELLIB    WindowToFront,_IntuitionBase
  6748.         rts
  6749. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  6750.         lea    MouseTxt(a4),a0
  6751.         move.l    a0,FontPtr(a5)
  6752.         bsr    LockScreen
  6753.         tst.l    d0
  6754.         beq    .MouseWinError
  6755.         moveq    #0,d2
  6756.         moveq    #0,d3
  6757.         RELLIB    ComputeFont,_KCXBase
  6758.         move.l    -4(a5),a0
  6759.         sub.l    a1,a1
  6760.         RELLIB    GetVisualInfoA,_GadToolsBase
  6761.         move.l    d0,MouseVisInfo(a4)
  6762.         beq    .MouseWinError
  6763.  
  6764.         move.l    -4(a5),a0
  6765.         moveq    #0,d3
  6766.         moveq    #0,d2
  6767.         move.w    MouseWinWidth(a4),d2
  6768.         move.w    MouseWinHeight(a4),d3
  6769.         RELLIB    ComputeFont,_KCXBase
  6770.         move.l    -4(a5),a0
  6771.         move.l    d2,d0
  6772.         DOLIB    ComputeX
  6773.         move.l    d0,d4
  6774.         move.w    MouseWinLeft(a4),d2
  6775.         move.l    -4(a5),a3
  6776.         move.w    sc_LeftEdge(a3),d5
  6777.         neg.w    d5
  6778.         add.w    d5,d2
  6779.         add.w    d2,d0
  6780.         add.w    OffX(a5),d0
  6781.         moveq    #0,d1
  6782.         move.b    sc_WBorRight(a0),d1
  6783.         add.w    d1,d0
  6784.         cmp.w    sc_Width(a0),d0
  6785.         bls.s    .WOk
  6786.         move.w    sc_Width(a0),d0
  6787.         sub.w    d4,d0
  6788.         move.w    d0,d2
  6789. .WOk        move.l    d3,d0
  6790.         DOLIB    ComputeY
  6791.         move.l    d0,d4
  6792.         move.w    MouseWinTop(a4),d3
  6793.         move.l    -4(a5),a3
  6794.         move.w    sc_TopEdge(a3),d5
  6795.         neg.w    d5
  6796.         add.w    d5,d3
  6797.         add.w    d3,d0
  6798.         add.w    OffY(a5),d0
  6799.         moveq    #0,d1
  6800.         move.b    sc_WBorBottom(a0),d1
  6801.         add.w    d1,d0
  6802.         cmp.w    sc_Height(a0),d0
  6803.         bls.s    .HOk
  6804.         move.w    sc_Height(a0),d0
  6805.         sub.w    d4,d0
  6806.         move.w    d0,d3
  6807. .HOk        lea.l    MouseGadget(a4),a0
  6808.         RELLIB    CreateContext,_GadToolsBase
  6809.         move.l    d0,a3
  6810.         beq    .MouseWinError
  6811.  
  6812.         movem.l d2-d3/a4,-(sp)
  6813.         moveq    #0,d3
  6814.         lea.l    MouseWinGTags,a4
  6815. .MouseWinGL    lea.l    MouseWinNGads,a0
  6816.         move.l    d3,d0
  6817.         mulu    #gng_SIZEOF,d0
  6818.         add.l    d0,a0
  6819.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  6820.         moveq    #gng_SIZEOF,d0
  6821.         CALLSYS    CopyMem
  6822.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  6823.         move.l    a4,-(sp)
  6824.         move.l    ZeroBase(pc),a4
  6825.         move.l    gng_GadgetText(a0),-(sp)
  6826.         bsr    GetLocStr
  6827.         move.l    (sp)+,d7
  6828.         move.l    d7,gng_GadgetText(a0)
  6829.         move.l    MouseVisInfo(a4),gng_VisualInfo(a0)
  6830.         move.l    FontPtr(a5),gng_TextAttr(a0)
  6831.         move.w    gng_LeftEdge(a0),d0
  6832.         RELLIB    ComputeX,_KCXBase
  6833.         add.w    OffX(a5),d0
  6834.         move.w    d0,gng_LeftEdge(a0)
  6835.         move.w    gng_TopEdge(a0),d0
  6836.         DOLIB    ComputeY
  6837.         add.w    OffY(a5),d0
  6838.         move.w    d0,gng_TopEdge(a0)
  6839.         move.w    gng_Width(a0),d0
  6840.         DOLIB    ComputeX
  6841.         move.w    d0,gng_Width(a0)
  6842.         move.w    gng_Height(a0),d0
  6843.         DOLIB    ComputeY
  6844.         move.l    (sp)+,a4
  6845.         move.w    d0,gng_Height(a0)
  6846.         lea.l    MouseWinGTypes,a0
  6847.         moveq    #0,d0
  6848.         move.l    d3,d1
  6849.         lsl.l    #1,d1
  6850.         move.w    0(a0,d1.w),d0
  6851.         move.l    a3,a0
  6852.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  6853.         move.l    a4,a2
  6854.         move.l    a4,-(sp)
  6855.         move.l    ZeroBase(pc),a4
  6856.         RELLIB    CreateGadgetA,_GadToolsBase
  6857.         move.l    (sp)+,a4
  6858.         tst.l    d0
  6859.         beq    .MouseWinError
  6860.         move.l    d0,a3
  6861.         move.l    d7,a0
  6862.         bsr    LocalizeGadKey
  6863.         move.l    d1,gg_UserData(a3)
  6864.         move.l    d3,d0
  6865.         lsl.l    #2,d0
  6866.         move.l    a4,-(sp)
  6867.         move.l    ZeroBase(pc),a4
  6868.         lea.l    MouseGads(a4),a0
  6869.         move.l    (sp)+,a4
  6870.         move.l    a3,0(a0,d0.w)
  6871. .MouseWinTL    tst.l    (a4)
  6872.         beq.s    .MouseWinDN
  6873.         addq.w    #8,a4
  6874.         bra.s    .MouseWinTL
  6875. .MouseWinDN    addq.w    #4,a4
  6876.         addq.w    #1,d3
  6877.         cmp.w    #MouseWin_CNT,d3
  6878.         bmi    .MouseWinGL
  6879.         movem.l (sp)+,d2-d3/a4
  6880.         move.l    MouseGadget(a4),MouseWinWG+4
  6881.  
  6882.         LOCLEA    MouseTitle,MouseWinWG+12
  6883.         LOCLEA    WindowScrTitle,MouseWinWG+20
  6884.         move.l    -4(a5),MouseWinSC+4        ; Open window
  6885.         ext.l    d2
  6886.         ext.l    d3
  6887.         move.l    d2,MouseWinL+4
  6888.         move.l    d3,MouseWinT+4
  6889.         move.l    -4(a5),a0
  6890.         move.w    MouseWinWidth(a4),d0
  6891.         RELLIB    ComputeX,_KCXBase
  6892.         add.w    OffX(a5),d0
  6893.         moveq    #0,d1
  6894.         move.b    sc_WBorRight(a0),d1
  6895.         add.w    d1,d0
  6896.         move.l    d0,MouseWinW+4
  6897.         move.w    MouseWinHeight(a4),d0
  6898.         DOLIB    ComputeY
  6899.         add.w    OffY(a5),d0
  6900.         moveq    #0,d1
  6901.         move.b    sc_WBorBottom(a0),d1
  6902.         add.w    d1,d0
  6903.         move.l    d0,MouseWinH+4
  6904.         suba.l    a0,a0
  6905.         lea.l    MouseWinWindowTags,a1
  6906.         RELLIB    OpenWindowTagList,_IntuitionBase
  6907.         move.l    d0,MouseHandle(a4)
  6908.         beq.s    .MouseWinError
  6909.         move.l    d0,a0
  6910.         move.l    WindowPort(a4),wd_UserPort(a0)
  6911.         move.l    #MOUSEWINIDCMP,d0
  6912.         DOLIB    ModifyIDCMP
  6913.  
  6914.         move.l    MouseHandle(a4),a0
  6915.         suba.l    a1,a1
  6916.         RELLIB    GT_RefreshWindow,_GadToolsBase
  6917.  
  6918.         bsr.s    SetMouseGads
  6919.         bsr    UnlockScreen
  6920.         unlk    a5
  6921.         rts
  6922. .MouseWinError    bsr    CloseMouseWin
  6923.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  6924.         bsr    DisplayError
  6925.         bsr    UnlockScreen
  6926.         unlk    a5
  6927.         rts
  6928.  
  6929. **********************************************************************
  6930. *                         Set mouse gadgets                          *
  6931. **********************************************************************
  6932. SetMouseGads    move.b    DoActivate(a4),d0
  6933.         move.l    #GD_WindowAct,d1
  6934.         bsr    SetMouseBox
  6935.  
  6936.         move.b    SunMouse(a4),d0
  6937.         move.l    #GD_SunMouse,d1
  6938.         bsr    SetMouseBox
  6939.  
  6940.         move.b    MouseAccel(a4),d0
  6941.         move.l    #GD_MouseAccel,d1
  6942.         bsr    SetMouseBox
  6943.  
  6944.         move.l    #GD_Accelerate,d0
  6945.         move.l    Accelerate(a4),d1
  6946.         RELLIB    SetSliderGad,_KCXBase
  6947.  
  6948.         move.l    #GD_Threshold,d0
  6949.         move.l    ThresHold(a4),d1
  6950.         RELLIB    SetSliderGad,_KCXBase
  6951.  
  6952.         move.l    #GD_Accelerate,d0
  6953.         moveq    #0,d1
  6954.         move.b    MouseAccel(a4),d1
  6955.         bchg    #0,d1
  6956.         RELLIB    GhostGadget,_KCXBase
  6957.  
  6958.         move.l    #GD_Threshold,d0
  6959.         RELLIB    GhostGadget,_KCXBase
  6960.  
  6961.         moveq    #0,d0
  6962.         move.w    HoldXQual(a4),d1
  6963.         move.l    #GD_HoldX,d2
  6964.         lea    HoldXQualStr(a4),a2
  6965.         bsr    DisplayHotKey
  6966.  
  6967.         move.w    HoldYQual(a4),d1
  6968.         move.l    #GD_HoldY,d2
  6969.         lea    HoldYQualStr(a4),a2
  6970.         bsr    DisplayHotKey
  6971.  
  6972.         move.b    HoldMouse(a4),d0
  6973.         move.l    #GD_HoldMouse,d1
  6974.         bsr.s    SetMouseBox
  6975.  
  6976.         move.b    LeftyMouse(a4),d0
  6977.         move.l    #GD_Lefty,d1
  6978.         bsr.s    SetMouseBox
  6979.  
  6980.         move.b    WindowReAct(a4),d0
  6981.         move.l    #GD_WinReAct,d1
  6982.         bsr.s    SetMouseBox
  6983.  
  6984.         rts
  6985. SetMouseBox    lea    MouseGads(a4),a0
  6986.         move.l    MouseHandle(a4),a1
  6987.         RELLIB    SetCheckBox,_KCXBase
  6988.         rts
  6989.  
  6990. **********************************************************************
  6991. *                         Close mouse window                         *
  6992. **********************************************************************
  6993. CloseMouseWin    lea    MouseHandle(a4),a3
  6994.         bra    CloseAWindow
  6995.  
  6996.  
  6997.  
  6998. **********************************************************************
  6999. *                         Open HotKey window                         *
  7000. **********************************************************************
  7001. OpenHotKeyWin    tst.l    HotKeyHandle(a4)
  7002.         beq.s    .GoOn
  7003.         move.l    HotKeyHandle(a4),a0
  7004.         RELLIB    WindowToFront,_IntuitionBase
  7005.         rts
  7006. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  7007.         lea    HotKeyTxt(a4),a0
  7008.         move.l    a0,FontPtr(a5)
  7009.         bsr    LockScreen
  7010.         tst.l    d0
  7011.         beq    .HotKeyWinError
  7012.         moveq    #0,d2
  7013.         moveq    #0,d3
  7014.         RELLIB    ComputeFont,_KCXBase
  7015.         move.l    -4(a5),a0
  7016.         sub.l    a1,a1
  7017.         RELLIB    GetVisualInfoA,_GadToolsBase
  7018.         move.l    d0,HotKeyVisInfo(a4)
  7019.         beq    .HotKeyWinError
  7020.  
  7021.         move.l    -4(a5),a0
  7022.         moveq    #0,d3
  7023.         moveq    #0,d2
  7024.         move.w    HotKeyWinWidth(a4),d2
  7025.         move.w    HotKeyWinHeight(a4),d3
  7026.         RELLIB    ComputeFont,_KCXBase
  7027.         move.l    -4(a5),a0
  7028.         move.l    d2,d0
  7029.         DOLIB    ComputeX
  7030.         move.l    d0,d4
  7031.         move.w    HotKeyWinLeft(a4),d2
  7032.         move.l    -4(a5),a3
  7033.         move.w    sc_LeftEdge(a3),d5
  7034.         neg.w    d5
  7035.         add.w    d5,d2
  7036.         add.w    d2,d0
  7037.         add.w    OffX(a5),d0
  7038.         moveq    #0,d1
  7039.         move.b    sc_WBorRight(a0),d1
  7040.         add.w    d1,d0
  7041.         cmp.w    sc_Width(a0),d0
  7042.         bls.s    .WOk
  7043.         move.w    sc_Width(a0),d0
  7044.         sub.w    d4,d0
  7045.         move.w    d0,d2
  7046. .WOk        move.l    d3,d0
  7047.         DOLIB    ComputeY
  7048.         move.l    d0,d4
  7049.         move.w    HotKeyWinTop(a4),d3
  7050.         move.l    -4(a5),a3
  7051.         move.w    sc_TopEdge(a3),d5
  7052.         neg.w    d5
  7053.         add.w    d5,d3
  7054.         add.w    d3,d0
  7055.         add.w    OffY(a5),d0
  7056.         moveq    #0,d1
  7057.         move.b    sc_WBorBottom(a0),d1
  7058.         add.w    d1,d0
  7059.         cmp.w    sc_Height(a0),d0
  7060.         bls.s    .HOk
  7061.         move.w    sc_Height(a0),d0
  7062.         sub.w    d4,d0
  7063.         move.w    d0,d3
  7064. .HOk        lea.l    HotKeyGadget(a4),a0
  7065.         RELLIB    CreateContext,_GadToolsBase
  7066.         move.l    d0,a3
  7067.         beq    .HotKeyWinError
  7068.  
  7069.         movem.l d2-d3/a4,-(sp)
  7070.         moveq    #0,d3
  7071.         lea.l    HotKeyWinGTags,a4
  7072. .HotKeyWinGL    lea.l    HotKeyWinNGads,a0
  7073.         move.l    d3,d0
  7074.         mulu    #gng_SIZEOF,d0
  7075.         add.l    d0,a0
  7076.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  7077.         moveq    #gng_SIZEOF,d0
  7078.         CALLSYS    CopyMem
  7079.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  7080.         move.l    a4,-(sp)
  7081.         move.l    ZeroBase(pc),a4
  7082.         move.l    gng_GadgetText(a0),-(sp)
  7083.         bsr    GetLocStr
  7084.         move.l    (sp)+,d7
  7085.         move.l    d7,gng_GadgetText(a0)
  7086.         move.l    HotKeyVisInfo(a4),gng_VisualInfo(a0)
  7087.         move.l    FontPtr(a5),gng_TextAttr(a0)
  7088.         move.w    gng_LeftEdge(a0),d0
  7089.         RELLIB    ComputeX,_KCXBase
  7090.         add.w    OffX(a5),d0
  7091.         move.w    d0,gng_LeftEdge(a0)
  7092.         move.w    gng_TopEdge(a0),d0
  7093.         DOLIB    ComputeY
  7094.         add.w    OffY(a5),d0
  7095.         move.w    d0,gng_TopEdge(a0)
  7096.         move.w    gng_Width(a0),d0
  7097.         DOLIB    ComputeX
  7098.         move.w    d0,gng_Width(a0)
  7099.         move.w    gng_Height(a0),d0
  7100.         DOLIB    ComputeY
  7101.         move.l    (sp)+,a4
  7102.         move.w    d0,gng_Height(a0)
  7103.         lea.l    HotKeyWinGTypes,a0
  7104.         moveq    #0,d0
  7105.         move.l    d3,d1
  7106.         lsl.l    #1,d1
  7107.         move.w    0(a0,d1.w),d0
  7108.         move.l    a3,a0
  7109.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  7110.         move.l    a4,a2
  7111.         move.l    a4,-(sp)
  7112.         move.l    ZeroBase(pc),a4
  7113.         bsr    LocalizeGadTags
  7114.         RELLIB    CreateGadgetA,_GadToolsBase
  7115.         move.l    (sp)+,a4
  7116.         tst.l    d0
  7117.         beq    .HotKeyWinError
  7118.         move.l    d0,a3
  7119.         move.l    d7,a0
  7120.         bsr    LocalizeGadKey
  7121.         move.l    d1,gg_UserData(a3)
  7122.         move.l    d3,d0
  7123.         lsl.l    #2,d0
  7124.         move.l    a4,-(sp)
  7125.         move.l    ZeroBase(pc),a4
  7126.         lea.l    HotKeyGads(a4),a0
  7127.         move.l    (sp)+,a4
  7128.         move.l    a3,0(a0,d0.w)
  7129. .HotKeyWinTL    tst.l    (a4)
  7130.         beq.s    .HotKeyWinDN
  7131.         addq.w    #8,a4
  7132.         bra.s    .HotKeyWinTL
  7133. .HotKeyWinDN    addq.w    #4,a4
  7134.         addq.w    #1,d3
  7135.         cmp.w    #HotKeyWin_CNT,d3
  7136.         bmi    .HotKeyWinGL
  7137.         movem.l (sp)+,d2-d3/a4
  7138.         move.l    HotKeyGadget(a4),HotKeyWinWG+4
  7139.  
  7140.         lea    HotKeyGads(a4),a0
  7141.         bsr    SetStrIntGads
  7142.  
  7143.         LOCLEA    HotKeyTitle,HotKeyWinWG+12
  7144.         LOCLEA    WindowScrTitle,HotKeyWinWG+20
  7145.         move.l    -4(a5),HotKeyWinSC+4        ; Open window
  7146.         ext.l    d2
  7147.         ext.l    d3
  7148.         move.l    d2,HotKeyWinL+4
  7149.         move.l    d3,HotKeyWinT+4
  7150.         move.l    -4(a5),a0
  7151.         move.w    HotKeyWinWidth(a4),d0
  7152.         RELLIB    ComputeX,_KCXBase
  7153.         add.w    OffX(a5),d0
  7154.         moveq    #0,d1
  7155.         move.b    sc_WBorRight(a0),d1
  7156.         add.w    d1,d0
  7157.         move.l    d0,HotKeyWinW+4
  7158.         move.w    HotKeyWinHeight(a4),d0
  7159.         DOLIB    ComputeY
  7160.         add.w    OffY(a5),d0
  7161.         moveq    #0,d1
  7162.         move.b    sc_WBorBottom(a0),d1
  7163.         add.w    d1,d0
  7164.         move.l    d0,HotKeyWinH+4
  7165.         suba.l    a0,a0
  7166.         lea.l    HotKeyWinWindowTags,a1
  7167.         RELLIB    OpenWindowTagList,_IntuitionBase
  7168.         move.l    d0,HotKeyHandle(a4)
  7169.         beq.s    .HotKeyWinError
  7170.         move.l    d0,a0
  7171.         move.l    WindowPort(a4),wd_UserPort(a0)
  7172.         move.l    #HOTKEYWINIDCMP,d0
  7173.         DOLIB    ModifyIDCMP
  7174.  
  7175.         move.l    #-1,HotKeyChange(a4)
  7176.  
  7177.         move.l    HotKeyHandle(a4),a0
  7178.         suba.l    a1,a1
  7179.         RELLIB    GT_RefreshWindow,_GadToolsBase
  7180.  
  7181.         move.l    #-1,HotKeyChange(a4)
  7182.  
  7183.         bsr    UnlockScreen
  7184.         unlk    a5
  7185.         rts
  7186. .HotKeyWinError    bsr.s    CloseHotKeyWin
  7187.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  7188.         bsr    DisplayError
  7189.         bsr    UnlockScreen
  7190.         unlk    a5
  7191.         rts
  7192.  
  7193.  
  7194. **********************************************************************
  7195. *                        Close HotKey window                         *
  7196. **********************************************************************
  7197. CloseHotKeyWin    lea    HotKeyHandle(a4),a3
  7198.         bra    CloseAWindow
  7199.  
  7200.  
  7201.  
  7202.  
  7203. **********************************************************************
  7204. *                       Open the FKeys-window                        *
  7205. **********************************************************************
  7206. OpenFKeyWin    tst.l    FKeyHandle(a4)
  7207.         beq.s    .GoOn
  7208.         move.l    FKeyHandle(a4),a0
  7209.         RELLIB    WindowToFront,_IntuitionBase
  7210.         rts
  7211. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  7212.         lea    FKeyTxt(a4),a0
  7213.         move.l    a0,FontPtr(a5)
  7214.         bsr    LockScreen
  7215.         tst.l    d0
  7216.         beq    .FKeyWinError
  7217.         moveq    #0,d2
  7218.         moveq    #0,d3
  7219.         RELLIB    ComputeFont,_KCXBase
  7220.         move.l    -4(a5),a0
  7221.         sub.l    a1,a1
  7222.         RELLIB    GetVisualInfoA,_GadToolsBase
  7223.         move.l    d0,FKeyVisInfo(a4)
  7224.         beq    .FKeyWinError
  7225.  
  7226.         move.l    -4(a5),a0
  7227.         moveq    #0,d3
  7228.         moveq    #0,d2
  7229.         move.w    FKeyWinWidth(a4),d2
  7230.         move.w    FKeyWinHeight(a4),d3
  7231.         RELLIB    ComputeFont,_KCXBase
  7232.         move.l    -4(a5),a0
  7233.         move.l    d2,d0
  7234.         DOLIB    ComputeX
  7235.         move.l    d0,d4
  7236.         move.w    FKeyWinLeft(a4),d2
  7237.         move.l    -4(a5),a3
  7238.         move.w    sc_LeftEdge(a3),d5
  7239.         neg.w    d5
  7240.         add.w    d5,d2
  7241.         add.w    d2,d0
  7242.         add.w    OffX(a5),d0
  7243.         moveq    #0,d1
  7244.         move.b    sc_WBorRight(a0),d1
  7245.         add.w    d1,d0
  7246.         cmp.w    sc_Width(a0),d0
  7247.         bls.s    .WOk
  7248.         move.w    sc_Width(a0),d0
  7249.         sub.w    d4,d0
  7250.         move.w    d0,d2
  7251. .WOk        move.l    d3,d0
  7252.         DOLIB    ComputeY
  7253.         move.l    d0,d4
  7254.         move.w    FKeyWinTop(a4),d3
  7255.         move.l    -4(a5),a3
  7256.         move.w    sc_TopEdge(a3),d5
  7257.         neg.w    d5
  7258.         add.w    d5,d3
  7259.         add.w    d3,d0
  7260.         add.w    OffY(a5),d0
  7261.         moveq    #0,d1
  7262.         move.b    sc_WBorBottom(a0),d1
  7263.         add.w    d1,d0
  7264.         cmp.w    sc_Height(a0),d0
  7265.         bls.s    .HOk
  7266.         move.w    sc_Height(a0),d0
  7267.         sub.w    d4,d0
  7268.         move.w    d0,d3
  7269. .HOk        lea.l    FKeyGadget(a4),a0
  7270.         RELLIB    CreateContext,_GadToolsBase
  7271.         move.l    d0,a3
  7272.         beq    .FKeyWinError
  7273.  
  7274.         movem.l d2-d3/a4,-(sp)
  7275.         moveq    #0,d3
  7276.         lea.l    FKeyWinGTags,a4
  7277. .FKeyWinGL    lea.l    FKeyWinNGads,a0
  7278.         move.l    d3,d0
  7279.         mulu    #gng_SIZEOF,d0
  7280.         add.l    d0,a0
  7281.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  7282.         moveq    #gng_SIZEOF,d0
  7283.         CALLSYS    CopyMem
  7284.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  7285.         move.l    a4,-(sp)
  7286.         move.l    ZeroBase(pc),a4
  7287.         move.l    gng_GadgetText(a0),-(sp)
  7288.         bsr    GetLocStr
  7289.         move.l    (sp)+,d7
  7290.         move.l    d7,gng_GadgetText(a0)
  7291.         move.l    FKeyVisInfo(a4),gng_VisualInfo(a0)
  7292.         move.l    FontPtr(a5),gng_TextAttr(a0)
  7293.         move.w    gng_LeftEdge(a0),d0
  7294.         RELLIB    ComputeX,_KCXBase
  7295.         add.w    OffX(a5),d0
  7296.         move.w    d0,gng_LeftEdge(a0)
  7297.         move.w    gng_TopEdge(a0),d0
  7298.         DOLIB    ComputeY
  7299.         add.w    OffY(a5),d0
  7300.         move.w    d0,gng_TopEdge(a0)
  7301.         move.w    gng_Width(a0),d0
  7302.         DOLIB    ComputeX
  7303.         move.w    d0,gng_Width(a0)
  7304.         move.w    gng_Height(a0),d0
  7305.         DOLIB    ComputeY
  7306.         move.l    (sp)+,a4
  7307.         move.w    d0,gng_Height(a0)
  7308.         lea.l    FKeyWinGTypes,a0
  7309.         moveq    #0,d0
  7310.         move.l    d3,d1
  7311.         lsl.l    #1,d1
  7312.         move.w    0(a0,d1.w),d0
  7313.         move.l    a3,a0
  7314.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  7315.         move.l    a4,a2
  7316.         move.l    a4,-(sp)
  7317.         move.l    ZeroBase(pc),a4
  7318.         bsr    LocalizeGadTags
  7319.         RELLIB    CreateGadgetA,_GadToolsBase
  7320.         move.l    (sp)+,a4
  7321.         tst.l    d0
  7322.         beq    .FKeyWinError
  7323.         move.l    d0,a3
  7324.         move.l    d7,a0
  7325.         bsr    LocalizeGadKey
  7326.         move.l    d1,gg_UserData(a3)
  7327.         move.l    d3,d0
  7328.         lsl.l    #2,d0
  7329.         move.l    a4,-(sp)
  7330.         move.l    ZeroBase(pc),a4
  7331.         lea.l    FKeyGads(a4),a0
  7332.         move.l    (sp)+,a4
  7333.         move.l    a3,0(a0,d0.w)
  7334. .FKeyWinTL    tst.l    (a4)
  7335.         beq.s    .FKeyWinDN
  7336.         addq.w    #8,a4
  7337.         bra.s    .FKeyWinTL
  7338. .FKeyWinDN    addq.w    #4,a4
  7339.         addq.w    #1,d3
  7340.         cmp.w    #FKeyWin_CNT,d3
  7341.         bmi    .FKeyWinGL
  7342.         movem.l (sp)+,d2-d3/a4
  7343.         move.l    FKeyGadget(a4),FKeyWinWG+4
  7344.  
  7345.         lea    FKeyGads(a4),a0
  7346.         bsr    SetStrIntGads
  7347.  
  7348.         LOCLEA    FKeyTitle,FKeyWinWG+12
  7349.         LOCLEA    WindowScrTitle,FKeyWinWG+20
  7350.         move.l    -4(a5),FKeyWinSC+4        ; Open window
  7351.         ext.l    d2
  7352.         ext.l    d3
  7353.         move.l    d2,FKeyWinL+4
  7354.         move.l    d3,FKeyWinT+4
  7355.         move.l    -4(a5),a0
  7356.         move.w    FKeyWinWidth(a4),d0
  7357.         RELLIB    ComputeX,_KCXBase
  7358.         add.w    OffX(a5),d0
  7359.         moveq    #0,d1
  7360.         move.b    sc_WBorRight(a0),d1
  7361.         add.w    d1,d0
  7362.         move.l    d0,FKeyWinW+4
  7363.         move.w    FKeyWinHeight(a4),d0
  7364.         DOLIB    ComputeY
  7365.         add.w    OffY(a5),d0
  7366.         moveq    #0,d1
  7367.         move.b    sc_WBorBottom(a0),d1
  7368.         add.w    d1,d0
  7369.         move.l    d0,FKeyWinH+4
  7370.         suba.l    a0,a0
  7371.         lea.l    FKeyWinWindowTags,a1
  7372.         RELLIB    OpenWindowTagList,_IntuitionBase
  7373.         move.l    d0,FKeyHandle(a4)
  7374.         beq.s    .FKeyWinError
  7375.         move.l    d0,a0
  7376.         move.l    WindowPort(a4),wd_UserPort(a0)
  7377.         move.l    #FKEYWINIDCMP,d0
  7378.         DOLIB    ModifyIDCMP
  7379.  
  7380.         lea    FKeys(a4),a2            ; Copy FKeys
  7381.         lea    FKeysNew(a4),a3
  7382.         move.w    #((MAXFKEYWIDTH+2)*40)-1,d7
  7383. .Loop        move.b    (a2)+,(a3)+
  7384.         dbf    d7,.Loop
  7385.  
  7386.         move.l    FKeyHandle(a4),a0
  7387.         suba.l    a1,a1
  7388.         RELLIB    GT_RefreshWindow,_GadToolsBase
  7389.  
  7390.         bsr.s    SetFKeyGads
  7391.         bsr    UnlockScreen
  7392.         unlk    a5
  7393.         move.l    FKeyHandle(a4),a0
  7394.         RELLIB    ActivateWindow,_IntuitionBase
  7395.         rts
  7396. .FKeyWinError    bsr.s    CloseFKeyWin
  7397.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  7398.         bsr    DisplayError
  7399.         bsr    UnlockScreen
  7400.         unlk    a5
  7401.         rts
  7402.  
  7403.  
  7404. **********************************************************************
  7405. *                    Set gadgets of FKeys window                     *
  7406. **********************************************************************
  7407. SetFKeyGads    move.l    FKeyQual(a4),d0
  7408.         mulu    #(MAXFKEYWIDTH+2)*10,d0        ; Display new list
  7409.         lea    FKeysNew(a4),a2
  7410.         lea    0(a2,d0),a2
  7411.         move.l    #GD_F1,d0
  7412.         moveq    #9,d6
  7413.         lea    FKeyGads(a4),a0
  7414.         move.l    FKeyHandle(a4),a1
  7415. .Loop        RELLIB    SetStringGad,_KCXBase
  7416.         lea    (MAXFKEYWIDTH+2)(a2),a2
  7417.         addq.l    #1,d0
  7418.         dbf    d6,.Loop
  7419.  
  7420.         move.l    #GD_FKeyQual,d0            ; Set cycle gadget
  7421.         move.l    FKeyQual(a4),d1
  7422.         lea    FKeyGads(a4),a0
  7423.         move.l    FKeyHandle(a4),a1
  7424.         RELLIB    SetCycleGad,_KCXBase
  7425.  
  7426.         move.b    FKeysOn(a4),d0            ; Set checkbox gadget
  7427.         move.l    #GD_FKeyAct,d1
  7428.         lea    FKeyGads(a4),a0
  7429.         move.l    FKeyHandle(a4),a1
  7430.         RELLIB    SetCheckBox,_KCXBase
  7431.         rts
  7432.  
  7433.  
  7434.  
  7435. **********************************************************************
  7436. *                         Close FKeys window                         *
  7437. **********************************************************************
  7438. CloseFKeyWin    lea    FKeyHandle(a4),a3
  7439.         bra    CloseAWindow
  7440.  
  7441.  
  7442.  
  7443.  
  7444. **********************************************************************
  7445. *                      Open Preferences window                       *
  7446. **********************************************************************
  7447. OpenPrefsWin    tst.l    PrefsHandle(a4)
  7448.         beq.s    .GoOn
  7449.         move.l    PrefsHandle(a4),a0
  7450.         RELLIB    WindowToFront,_IntuitionBase
  7451.         rts
  7452. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  7453.         lea    PrefsTxt(a4),a0
  7454.         move.l    a0,FontPtr(a5)
  7455.         bsr    LockScreen
  7456.         tst.l    d0
  7457.         beq    .PrefsWinError
  7458.         moveq    #0,d2
  7459.         moveq    #0,d3
  7460.         RELLIB    ComputeFont,_KCXBase
  7461.         move.l    -4(a5),a0
  7462.         sub.l    a1,a1
  7463.         RELLIB    GetVisualInfoA,_GadToolsBase
  7464.         move.l    d0,PrefsVisInfo(a4)
  7465.         beq    .PrefsWinError
  7466.  
  7467.         move.l    -4(a5),a0
  7468.         moveq    #0,d3
  7469.         moveq    #0,d2
  7470.         move.w    PrefsWinWidth(a4),d2
  7471.         move.w    PrefsWinHeight(a4),d3
  7472.         RELLIB    ComputeFont,_KCXBase
  7473.         move.l    -4(a5),a0
  7474.         move.l    d2,d0
  7475.         DOLIB    ComputeX
  7476.         move.l    d0,d4
  7477.         move.w    PrefsWinLeft(a4),d2
  7478.         move.l    -4(a5),a3
  7479.         move.w    sc_LeftEdge(a3),d5
  7480.         neg.w    d5
  7481.         add.w    d5,d2
  7482.         add.w    d2,d0
  7483.         add.w    OffX(a5),d0
  7484.         moveq    #0,d1
  7485.         move.b    sc_WBorRight(a0),d1
  7486.         add.w    d1,d0
  7487.         cmp.w    sc_Width(a0),d0
  7488.         bls.s    .WOk
  7489.         move.w    sc_Width(a0),d0
  7490.         sub.w    d4,d0
  7491.         move.w    d0,d2
  7492. .WOk        move.l    d3,d0
  7493.         DOLIB    ComputeY
  7494.         move.l    d0,d4
  7495.         move.w    PrefsWinTop(a4),d3
  7496.         move.l    -4(a5),a3
  7497.         move.w    sc_TopEdge(a3),d5
  7498.         neg.w    d5
  7499.         add.w    d5,d3
  7500.         add.w    d3,d0
  7501.         add.w    OffY(a5),d0
  7502.         moveq    #0,d1
  7503.         move.b    sc_WBorBottom(a0),d1
  7504.         add.w    d1,d0
  7505.         cmp.w    sc_Height(a0),d0
  7506.         bls.s    .HOk
  7507.         move.w    sc_Height(a0),d0
  7508.         sub.w    d4,d0
  7509.         move.w    d0,d3
  7510. .HOk        lea.l    PrefsGadget(a4),a0
  7511.         RELLIB    CreateContext,_GadToolsBase
  7512.         move.l    d0,a3
  7513.         beq    .PrefsWinError
  7514.  
  7515.         movem.l d2-d3/a4,-(sp)
  7516.         moveq    #0,d3
  7517.         lea.l    PrefsWinGTags,a4
  7518. .PrefsWinGL    lea.l    PrefsWinNGads,a0
  7519.         move.l    d3,d0
  7520.         mulu    #gng_SIZEOF,d0
  7521.         add.l    d0,a0
  7522.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  7523.         moveq    #gng_SIZEOF,d0
  7524.         CALLSYS    CopyMem
  7525.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  7526.         move.l    a4,-(sp)
  7527.         move.l    ZeroBase(pc),a4
  7528.         move.l    gng_GadgetText(a0),-(sp)
  7529.         bsr    GetLocStr
  7530.         move.l    (sp)+,d7
  7531.         move.l    d7,gng_GadgetText(a0)
  7532.         move.l    PrefsVisInfo(a4),gng_VisualInfo(a0)
  7533.         move.l    FontPtr(a5),gng_TextAttr(a0)
  7534.         move.w    gng_LeftEdge(a0),d0
  7535.         RELLIB    ComputeX,_KCXBase
  7536.         add.w    OffX(a5),d0
  7537.         move.w    d0,gng_LeftEdge(a0)
  7538.         move.w    gng_TopEdge(a0),d0
  7539.         DOLIB    ComputeY
  7540.         add.w    OffY(a5),d0
  7541.         move.w    d0,gng_TopEdge(a0)
  7542.         move.w    gng_Width(a0),d0
  7543.         DOLIB    ComputeX
  7544.         move.w    d0,gng_Width(a0)
  7545.         move.w    gng_Height(a0),d0
  7546.         DOLIB    ComputeY
  7547.         move.l    (sp)+,a4
  7548.         move.w    d0,gng_Height(a0)
  7549.         lea.l    PrefsWinGTypes,a0
  7550.         moveq    #0,d0
  7551.         move.l    d3,d1
  7552.         lsl.l    #1,d1
  7553.         move.w    0(a0,d1.w),d0
  7554.         move.l    a3,a0
  7555.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  7556.         move.l    a4,a2
  7557.         move.l    a4,-(sp)
  7558.         move.l    ZeroBase(pc),a4
  7559.         bsr    LocalizeGadTags
  7560.         RELLIB    CreateGadgetA,_GadToolsBase
  7561.         move.l    (sp)+,a4
  7562.         tst.l    d0
  7563.         beq    .PrefsWinError
  7564.         move.l    d0,a3
  7565.         move.l    d7,a0
  7566.         bsr    LocalizeGadKey
  7567.         move.l    d1,gg_UserData(a3)
  7568.         move.l    d3,d0
  7569.         lsl.l    #2,d0
  7570.         move.l    a4,-(sp)
  7571.         move.l    ZeroBase(pc),a4
  7572.         lea.l    PrefsGads(a4),a0
  7573.         move.l    (sp)+,a4
  7574.         move.l    a3,0(a0,d0.w)
  7575. .PrefsWinTL    tst.l    (a4)
  7576.         beq.s    .PrefsWinDN
  7577.         addq.w    #8,a4
  7578.         bra.s    .PrefsWinTL
  7579. .PrefsWinDN    addq.w    #4,a4
  7580.         addq.w    #1,d3
  7581.         cmp.w    #PrefsWin_CNT,d3
  7582.         bmi    .PrefsWinGL
  7583.         movem.l (sp)+,d2-d3/a4
  7584.         move.l    PrefsGadget(a4),PrefsWinWG+4
  7585.  
  7586.         lea    PrefsGads(a4),a0
  7587.         bsr    SetStrIntGads
  7588.  
  7589.         LOCLEA    PrefsTitle,PrefsWinWG+12
  7590.         LOCLEA    WindowScrTitle,PrefsWinWG+20
  7591.         move.l    -4(a5),PrefsWinSC+4        ; Open window
  7592.         ext.l    d2
  7593.         ext.l    d3
  7594.         move.l    d2,PrefsWinL+4
  7595.         move.l    d3,PrefsWinT+4
  7596.         move.l    -4(a5),a0
  7597.         move.w    PrefsWinWidth(a4),d0
  7598.         RELLIB    ComputeX,_KCXBase
  7599.         add.w    OffX(a5),d0
  7600.         moveq    #0,d1
  7601.         move.b    sc_WBorRight(a0),d1
  7602.         add.w    d1,d0
  7603.         move.l    d0,PrefsWinW+4
  7604.         move.w    PrefsWinHeight(a4),d0
  7605.         DOLIB    ComputeY
  7606.         add.w    OffY(a5),d0
  7607.         moveq    #0,d1
  7608.         move.b    sc_WBorBottom(a0),d1
  7609.         add.w    d1,d0
  7610.         move.l    d0,PrefsWinH+4
  7611.         suba.l    a0,a0
  7612.         lea.l    PrefsWinWindowTags,a1
  7613.         RELLIB    OpenWindowTagList,_IntuitionBase
  7614.         move.l    d0,PrefsHandle(a4)
  7615.         beq.s    .PrefsWinError
  7616.         move.l    d0,a0
  7617.         move.l    WindowPort(a4),wd_UserPort(a0)
  7618.         move.l    #PREFSWINIDCMP,d0
  7619.         DOLIB    ModifyIDCMP
  7620.  
  7621.         move.l    PrefsHandle(a4),a0
  7622.         suba.l    a1,a1
  7623.         RELLIB    GT_RefreshWindow,_GadToolsBase
  7624.  
  7625.         bsr.s    SetPrefsGads
  7626.         bsr    UnlockScreen
  7627.         unlk    a5
  7628.         rts
  7629. .PrefsWinError    bsr    ClosePrefsWin
  7630.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  7631.         bsr    DisplayError
  7632.         bsr    UnlockScreen
  7633.         unlk    a5
  7634.         rts
  7635.  
  7636.  
  7637. **********************************************************************
  7638. *                      Set Preferences gadgets                       *
  7639. **********************************************************************
  7640. SetPrefsGads    lea    CostUnit1(a4),a3        ; Remake these 6 cost gadgets
  7641.         moveq    #GD_Normal1,d7
  7642.         moveq    #5,d6
  7643. .RemakeCosts    move.l    d7,d0
  7644.         move.l    (a3)+,d1
  7645.         addq.l    #1,d7
  7646.         bsr    SetPrefsInteger
  7647.         dbf    d6,.RemakeCosts
  7648.  
  7649.         move.l    #GD_CostUnit,d0            ; Remake cost/unit gad
  7650.         move.l    CostUnit(a4),d1
  7651.         bsr.s    SetPrefsInteger
  7652.  
  7653.         move.l    #GD_LogName,d0            ; Remake Log-FileName
  7654.         lea    LogFileName(a4),a2
  7655.         RELLIB    SetStringGad,_KCXBase
  7656.  
  7657.         move.l    #GD_OpenBill,d0            ; Remake Public Screen Name
  7658.         lea    PubScreenName(a4),a2
  7659.         RELLIB    SetStringGad,_KCXBase
  7660.  
  7661.         move.l    #GD_StartNorm,d0
  7662.         move.l    CheapStop(a4),d1
  7663.         RELLIB    SetSliderGad,_KCXBase
  7664.  
  7665.         move.l    #GD_StartCheap,d0
  7666.         move.l    CheapStart(a4),d1
  7667.         RELLIB    SetSliderGad,_KCXBase
  7668.  
  7669.         moveq    #0,d0
  7670.         move.b    BillPopUp(a4),d0
  7671.         move.l    #GD_PopUpBill,d1
  7672.         bsr.s    SetPrefsBox
  7673.  
  7674.         moveq    #0,d0
  7675.         move.b    ActiveBill(a4),d0
  7676.         move.l    #GD_ActiveBill,d1
  7677.         bsr.s    SetPrefsBox
  7678.  
  7679.         lea    Sunday(a4),a3
  7680.         moveq    #6,d7
  7681.         move.l    #GD_Sunday,d1
  7682. .Loop        move.b    (a3)+,d0
  7683.         bsr.s    SetPrefsBox
  7684.         addq.l    #1,d1
  7685.         dbf    d7,.Loop
  7686.         rts
  7687. SetPrefsInteger    lea    PrefsGads(a4),a0
  7688.         move.l    PrefsHandle(a4),a1
  7689.         RELLIB    SetIntegerGad,_KCXBase
  7690.         rts
  7691. SetPrefsBox    lea    PrefsGads(a4),a0
  7692.         move.l    PrefsHandle(a4),a1
  7693.         RELLIB    SetCheckBox,_KCXBase
  7694.         rts
  7695.  
  7696.  
  7697. **********************************************************************
  7698. *                      Close Preferences window                      *
  7699. **********************************************************************
  7700. ClosePrefsWin    lea    PrefsHandle(a4),a3
  7701.         bra    CloseAWindow
  7702.  
  7703.  
  7704.  
  7705.  
  7706. **********************************************************************
  7707. *                      Open Preferences window                       *
  7708. **********************************************************************
  7709. OpenLockWin    tst.l    LockHandle(a4)
  7710.         beq.s    .GoOn
  7711.         move.l    LockHandle(a4),a0
  7712.         RELLIB    WindowToFront,_IntuitionBase
  7713.         rts
  7714. .GoOn        lea    WindowBase(a4),a0
  7715.         move.l    a0,WindowListList+4
  7716.         clr.b    LockListType(a4)
  7717.         move.w    NumWindows(a4),NumLockEntries(a4)
  7718.  
  7719.         link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  7720.         lea    LockTxt(a4),a0
  7721.         move.l    a0,FontPtr(a5)
  7722.         bsr    LockScreen
  7723.         tst.l    d0
  7724.         beq    .LockWinError
  7725.         moveq    #0,d2
  7726.         moveq    #0,d3
  7727.         RELLIB    ComputeFont,_KCXBase
  7728.         move.l    -4(a5),a0
  7729.         sub.l    a1,a1
  7730.         RELLIB    GetVisualInfoA,_GadToolsBase
  7731.         move.l    d0,LockVisInfo(a4)
  7732.         beq    .LockWinError
  7733.  
  7734.         move.l    -4(a5),a0
  7735.         moveq    #0,d3
  7736.         moveq    #0,d2
  7737.         move.w    LockWinWidth(a4),d2
  7738.         move.w    LockWinHeight(a4),d3
  7739.         RELLIB    ComputeFont,_KCXBase
  7740.         move.l    -4(a5),a0
  7741.         move.l    d2,d0
  7742.         DOLIB    ComputeX
  7743.         move.l    d0,d4
  7744.         move.w    LockWinLeft(a4),d2
  7745.         move.l    -4(a5),a3
  7746.         move.w    sc_LeftEdge(a3),d5
  7747.         neg.w    d5
  7748.         add.w    d5,d2
  7749.         add.w    d2,d0
  7750.         add.w    OffX(a5),d0
  7751.         moveq    #0,d1
  7752.         move.b    sc_WBorRight(a0),d1
  7753.         add.w    d1,d0
  7754.         cmp.w    sc_Width(a0),d0
  7755.         bls.s    .WOk
  7756.         move.w    sc_Width(a0),d0
  7757.         sub.w    d4,d0
  7758.         move.w    d0,d2
  7759. .WOk        move.l    d3,d0
  7760.         DOLIB    ComputeY
  7761.         move.l    d0,d4
  7762.         move.w    LockWinTop(a4),d3
  7763.         move.l    -4(a5),a3
  7764.         move.w    sc_TopEdge(a3),d5
  7765.         neg.w    d5
  7766.         add.w    d5,d3
  7767.         add.w    d3,d0
  7768.         add.w    OffY(a5),d0
  7769.         moveq    #0,d1
  7770.         move.b    sc_WBorBottom(a0),d1
  7771.         add.w    d1,d0
  7772.         cmp.w    sc_Height(a0),d0
  7773.         bls.s    .HOk
  7774.         move.w    sc_Height(a0),d0
  7775.         sub.w    d4,d0
  7776.         move.w    d0,d3
  7777. .HOk        lea.l    LockGadget(a4),a0
  7778.         RELLIB    CreateContext,_GadToolsBase
  7779.         move.l    d0,a3
  7780.         beq    .LockWinError
  7781.  
  7782.         movem.l d2-d3/a4,-(sp)
  7783.         moveq    #0,d3
  7784.         lea.l    LockWinGTags,a4
  7785. .LockWinGL    lea.l    LockWinNGads,a0
  7786.         move.l    d3,d0
  7787.         mulu    #gng_SIZEOF,d0
  7788.         add.l    d0,a0
  7789.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  7790.         moveq    #gng_SIZEOF,d0
  7791.         CALLSYS    CopyMem
  7792.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  7793.         move.l    a4,-(sp)
  7794.         move.l    ZeroBase(pc),a4
  7795.         move.l    gng_GadgetText(a0),-(sp)
  7796.         bsr    GetLocStr
  7797.         move.l    (sp)+,d7
  7798.         move.l    d7,gng_GadgetText(a0)
  7799.         move.l    LockVisInfo(a4),gng_VisualInfo(a0)
  7800.         move.l    FontPtr(a5),gng_TextAttr(a0)
  7801.         move.w    gng_LeftEdge(a0),d0
  7802.         RELLIB    ComputeX,_KCXBase
  7803.         add.w    OffX(a5),d0
  7804.         move.w    d0,gng_LeftEdge(a0)
  7805.         move.w    gng_TopEdge(a0),d0
  7806.         DOLIB    ComputeY
  7807.         add.w    OffY(a5),d0
  7808.         move.w    d0,gng_TopEdge(a0)
  7809.         move.w    gng_Width(a0),d0
  7810.         DOLIB    ComputeX
  7811.         move.w    d0,gng_Width(a0)
  7812.         move.w    gng_Height(a0),d0
  7813.         DOLIB    ComputeY
  7814.         move.l    (sp)+,a4
  7815.         move.w    d0,gng_Height(a0)
  7816.         lea.l    LockWinGTypes,a0
  7817.         moveq    #0,d0
  7818.         move.l    d3,d1
  7819.         lsl.l    #1,d1
  7820.         move.w    0(a0,d1.w),d0
  7821.         move.l    a3,a0
  7822.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  7823.         move.l    a4,a2
  7824.         move.l    a4,-(sp)
  7825.         move.l    ZeroBase(pc),a4
  7826.         bsr    LocalizeGadTags
  7827.         RELLIB    CreateGadgetA,_GadToolsBase
  7828.         move.l    (sp)+,a4
  7829.         tst.l    d0
  7830.         beq    .LockWinError
  7831.         move.l    d0,a3
  7832.         move.l    d7,a0
  7833.         bsr    LocalizeGadKey
  7834.         move.l    d1,gg_UserData(a3)
  7835.         cmp.w    #GD_WindowName,d3
  7836.         bne.s    .NoName
  7837.         move.l    d0,WindowListGad+4
  7838. .NoName        move.l    d3,d0
  7839.         lsl.l    #2,d0
  7840.         move.l    a4,-(sp)
  7841.         move.l    ZeroBase(pc),a4
  7842.         lea.l    LockGads(a4),a0
  7843.         move.l    (sp)+,a4
  7844.         move.l    a3,0(a0,d0.w)
  7845. .LockWinTL    tst.l    (a4)
  7846.         beq.s    .LockWinDN
  7847.         addq.w    #8,a4
  7848.         bra.s    .LockWinTL
  7849. .LockWinDN    addq.w    #4,a4
  7850.         addq.w    #1,d3
  7851.         cmp.w    #LockWin_CNT,d3
  7852.         bmi    .LockWinGL
  7853.         movem.l (sp)+,d2-d3/a4
  7854.         move.l    LockGadget(a4),LockWinWG+4
  7855.  
  7856.         lea    LockGads(a4),a0
  7857.         bsr    SetStrIntGads
  7858.  
  7859.         LOCLEA    LockTitle,LockWinWG+12
  7860.         LOCLEA    WindowScrTitle,LockWinWG+20
  7861.         move.l    -4(a5),LockWinSC+4        ; Open window
  7862.         ext.l    d2
  7863.         ext.l    d3
  7864.         move.l    d2,LockWinL+4
  7865.         move.l    d3,LockWinT+4
  7866.         move.l    -4(a5),a0
  7867.         move.w    LockWinWidth(a4),d0
  7868.         RELLIB    ComputeX,_KCXBase
  7869.         add.w    OffX(a5),d0
  7870.         moveq    #0,d1
  7871.         move.b    sc_WBorRight(a0),d1
  7872.         add.w    d1,d0
  7873.         move.l    d0,LockWinW+4
  7874.         move.w    LockWinHeight(a4),d0
  7875.         DOLIB    ComputeY
  7876.         add.w    OffY(a5),d0
  7877.         moveq    #0,d1
  7878.         move.b    sc_WBorBottom(a0),d1
  7879.         add.w    d1,d0
  7880.         move.l    d0,LockWinH+4
  7881.         suba.l    a0,a0
  7882.         lea.l    LockWinWindowTags,a1
  7883.         RELLIB    OpenWindowTagList,_IntuitionBase
  7884.         move.l    d0,LockHandle(a4)
  7885.         beq.s    .LockWinError
  7886.         move.l    d0,a0
  7887.         move.l    WindowPort(a4),wd_UserPort(a0)
  7888.         move.l    #LOCKWINIDCMP,d0
  7889.         DOLIB    ModifyIDCMP
  7890.  
  7891.         move.l    LockHandle(a4),a0
  7892.         suba.l    a1,a1
  7893.         RELLIB    GT_RefreshWindow,_GadToolsBase
  7894.  
  7895.         move.w    #-1,SelWindow(a4)
  7896.  
  7897.         bsr    UnlockScreen
  7898.         unlk    a5
  7899.         rts
  7900. .LockWinError    bsr.s    CloseLockWin
  7901.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  7902.         bsr    DisplayError
  7903.         bsr    UnlockScreen
  7904.         unlk    a5
  7905.         rts
  7906.  
  7907.  
  7908.  
  7909. **********************************************************************
  7910. *                      Close Preferences window                      *
  7911. **********************************************************************
  7912. CloseLockWin    lea    LockHandle(a4),a3
  7913.         bra    CloseAWindow
  7914.  
  7915.  
  7916.  
  7917.  
  7918. **********************************************************************
  7919. *                      Open Preferences window                       *
  7920. **********************************************************************
  7921. OpenTaskWin    tst.l    TaskHandle(a4)
  7922.         beq.s    .GoOn
  7923.         move.l    TaskHandle(a4),a0
  7924.         RELLIB    WindowToFront,_IntuitionBase
  7925.         rts
  7926. .GoOn        link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  7927.         lea    TaskTxt(a4),a0
  7928.         move.l    a0,FontPtr(a5)
  7929.         bsr    LockScreen
  7930.         tst.l    d0
  7931.         beq    .TaskWinError
  7932.         moveq    #0,d2
  7933.         moveq    #0,d3
  7934.         RELLIB    ComputeFont,_KCXBase
  7935.         move.l    -4(a5),a0
  7936.         sub.l    a1,a1
  7937.         RELLIB    GetVisualInfoA,_GadToolsBase
  7938.         move.l    d0,TaskVisInfo(a4)
  7939.         beq    .TaskWinError
  7940.  
  7941.         move.l    -4(a5),a0
  7942.         moveq    #0,d3
  7943.         moveq    #0,d2
  7944.         move.w    TaskWinWidth(a4),d2
  7945.         move.w    TaskWinHeight(a4),d3
  7946.         RELLIB    ComputeFont,_KCXBase
  7947.         move.l    -4(a5),a0
  7948.         move.l    d2,d0
  7949.         DOLIB    ComputeX
  7950.         move.l    d0,d4
  7951.         move.w    TaskWinLeft(a4),d2
  7952.         move.l    -4(a5),a3
  7953.         move.w    sc_LeftEdge(a3),d5
  7954.         neg.w    d5
  7955.         add.w    d5,d2
  7956.         add.w    d2,d0
  7957.         add.w    OffX(a5),d0
  7958.         moveq    #0,d1
  7959.         move.b    sc_WBorRight(a0),d1
  7960.         add.w    d1,d0
  7961.         cmp.w    sc_Width(a0),d0
  7962.         bls.s    .WOk
  7963.         move.w    sc_Width(a0),d0
  7964.         sub.w    d4,d0
  7965.         move.w    d0,d2
  7966. .WOk        move.l    d3,d0
  7967.         DOLIB    ComputeY
  7968.         move.l    d0,d4
  7969.         move.w    TaskWinTop(a4),d3
  7970.         move.l    -4(a5),a3
  7971.         move.w    sc_TopEdge(a3),d5
  7972.         neg.w    d5
  7973.         add.w    d5,d3
  7974.         add.w    d3,d0
  7975.         add.w    OffY(a5),d0
  7976.         moveq    #0,d1
  7977.         move.b    sc_WBorBottom(a0),d1
  7978.         add.w    d1,d0
  7979.         cmp.w    sc_Height(a0),d0
  7980.         bls.s    .HOk
  7981.         move.w    sc_Height(a0),d0
  7982.         sub.w    d4,d0
  7983.         move.w    d0,d3
  7984. .HOk        lea.l    TaskGadget(a4),a0
  7985.         RELLIB    CreateContext,_GadToolsBase
  7986.         move.l    d0,a3
  7987.         beq    .TaskWinError
  7988.  
  7989.         movem.l d2-d3/a4,-(sp)
  7990.         moveq    #0,d3
  7991.         lea.l    TaskWinGTags,a4
  7992. .TaskWinGL    lea.l    TaskWinNGads,a0
  7993.         move.l    d3,d0
  7994.         mulu    #gng_SIZEOF,d0
  7995.         add.l    d0,a0
  7996.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  7997.         moveq    #gng_SIZEOF,d0
  7998.         CALLSYS    CopyMem
  7999.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  8000.         move.l    a4,-(sp)
  8001.         move.l    ZeroBase(pc),a4
  8002.         move.l    gng_GadgetText(a0),-(sp)
  8003.         bsr    GetLocStr
  8004.         move.l    (sp)+,d7
  8005.         move.l    d7,gng_GadgetText(a0)
  8006.         move.l    TaskVisInfo(a4),gng_VisualInfo(a0)
  8007.         move.l    FontPtr(a5),gng_TextAttr(a0)
  8008.         move.w    gng_LeftEdge(a0),d0
  8009.         RELLIB    ComputeX,_KCXBase
  8010.         add.w    OffX(a5),d0
  8011.         move.w    d0,gng_LeftEdge(a0)
  8012.         move.w    gng_TopEdge(a0),d0
  8013.         DOLIB    ComputeY
  8014.         add.w    OffY(a5),d0
  8015.         move.w    d0,gng_TopEdge(a0)
  8016.         move.w    gng_Width(a0),d0
  8017.         DOLIB    ComputeX
  8018.         move.w    d0,gng_Width(a0)
  8019.         move.w    gng_Height(a0),d0
  8020.         DOLIB    ComputeY
  8021.         move.l    (sp)+,a4
  8022.         move.w    d0,gng_Height(a0)
  8023.         lea.l    TaskWinGTypes,a0
  8024.         moveq    #0,d0
  8025.         move.l    d3,d1
  8026.         lsl.l    #1,d1
  8027.         move.w    0(a0,d1.w),d0
  8028.         move.l    a3,a0
  8029.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  8030.         move.l    a4,a2
  8031.         move.l    a4,-(sp)
  8032.         move.l    ZeroBase(pc),a4
  8033.         RELLIB    CreateGadgetA,_GadToolsBase
  8034.         move.l    (sp)+,a4
  8035.         tst.l    d0
  8036.         beq    .TaskWinError
  8037.         move.l    d0,a3
  8038.         move.l    d7,a0
  8039.         bsr    LocalizeGadKey
  8040.         move.l    d1,gg_UserData(a3)
  8041.         cmp.w    #GD_WindowName,d3
  8042.         bne.s    .NoName
  8043.         move.l    d0,WindowListGad+4
  8044. .NoName        move.l    d3,d0
  8045.         lsl.l    #2,d0
  8046.         move.l    a4,-(sp)
  8047.         move.l    ZeroBase(pc),a4
  8048.         lea.l    TaskGads(a4),a0
  8049.         move.l    (sp)+,a4
  8050.         move.l    a3,0(a0,d0.w)
  8051. .TaskWinTL    tst.l    (a4)
  8052.         beq.s    .TaskWinDN
  8053.         addq.w    #8,a4
  8054.         bra.s    .TaskWinTL
  8055. .TaskWinDN    addq.w    #4,a4
  8056.         addq.w    #1,d3
  8057.         cmp.w    #TaskWin_CNT,d3
  8058.         bmi    .TaskWinGL
  8059.         movem.l (sp)+,d2-d3/a4
  8060.         move.l    TaskGadget(a4),TaskWinWG+4
  8061.  
  8062.         LOCLEA    TaskWinWTitle,TaskWinWG+12
  8063.         LOCLEA    WindowScrTitle,TaskWinWG+20
  8064.         move.l    -4(a5),TaskWinSC+4        ; Open window
  8065.         ext.l    d2
  8066.         ext.l    d3
  8067.         move.l    d2,TaskWinL+4
  8068.         move.l    d3,TaskWinT+4
  8069.         move.l    -4(a5),a0
  8070.         move.w    TaskWinWidth(a4),d0
  8071.         RELLIB    ComputeX,_KCXBase
  8072.         add.w    OffX(a5),d0
  8073.         moveq    #0,d1
  8074.         move.b    sc_WBorRight(a0),d1
  8075.         add.w    d1,d0
  8076.         move.l    d0,TaskWinW+4
  8077.         move.w    TaskWinHeight(a4),d0
  8078.         DOLIB    ComputeY
  8079.         add.w    OffY(a5),d0
  8080.         moveq    #0,d1
  8081.         move.b    sc_WBorBottom(a0),d1
  8082.         add.w    d1,d0
  8083.         move.l    d0,TaskWinH+4
  8084.         suba.l    a0,a0
  8085.         lea.l    TaskWinWindowTags,a1
  8086.         RELLIB    OpenWindowTagList,_IntuitionBase
  8087.         move.l    d0,TaskHandle(a4)
  8088.         beq.s    .TaskWinError
  8089.         move.l    d0,a0
  8090.         move.l    WindowPort(a4),wd_UserPort(a0)
  8091.         move.l    #TASKWINIDCMP,d0
  8092.         DOLIB    ModifyIDCMP
  8093.  
  8094.         move.l    TaskHandle(a4),a0
  8095.         suba.l    a1,a1
  8096.         RELLIB    GT_RefreshWindow,_GadToolsBase
  8097.  
  8098.         bsr    UnlockScreen
  8099.         unlk    a5
  8100.         rts
  8101. .TaskWinError    bsr.s    CloseTaskWin
  8102.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  8103.         bsr    DisplayError
  8104.         bsr    UnlockScreen
  8105.         unlk    a5
  8106.         rts
  8107.  
  8108.  
  8109.  
  8110. **********************************************************************
  8111. *                      Close Preferences window                      *
  8112. **********************************************************************
  8113. CloseTaskWin    lea    TaskHandle(a4),a3
  8114.         bra    CloseAWindow
  8115.  
  8116.  
  8117.  
  8118.  
  8119. **********************************************************************
  8120. *                      Open Preferences window                       *
  8121. **********************************************************************
  8122. OpenTagScrWin    tst.l    TagScrHandle(a4)
  8123.         beq.s    .GoOn
  8124.         move.l    TagScrHandle(a4),a0
  8125.         RELLIB    WindowToFront,_IntuitionBase
  8126.         rts
  8127. .GoOn        lea    TagScrsTasks(a4),a0
  8128.         move.l    a0,TagScrTaskList+4
  8129.  
  8130.         link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  8131.         lea    TagScrTxt(a4),a0
  8132.         move.l    a0,FontPtr(a5)
  8133.         bsr    LockScreen
  8134.         tst.l    d0
  8135.         beq    .TagScrWinError
  8136.         moveq    #0,d2
  8137.         moveq    #0,d3
  8138.         RELLIB    ComputeFont,_KCXBase
  8139.         move.l    -4(a5),a0
  8140.         sub.l    a1,a1
  8141.         RELLIB    GetVisualInfoA,_GadToolsBase
  8142.         move.l    d0,TagScrVisInfo(a4)
  8143.         beq    .TagScrWinError
  8144.  
  8145.         move.l    -4(a5),a0
  8146.         moveq    #0,d3
  8147.         moveq    #0,d2
  8148.         move.w    TagScrWinWidth(a4),d2
  8149.         move.w    TagScrWinHeight(a4),d3
  8150.         RELLIB    ComputeFont,_KCXBase
  8151.         move.l    -4(a5),a0
  8152.         move.l    d2,d0
  8153.         DOLIB    ComputeX
  8154.         move.l    d0,d4
  8155.         move.w    TagScrWinLeft(a4),d2
  8156.         move.l    -4(a5),a3
  8157.         move.w    sc_LeftEdge(a3),d5
  8158.         neg.w    d5
  8159.         add.w    d5,d2
  8160.         add.w    d2,d0
  8161.         add.w    OffX(a5),d0
  8162.         moveq    #0,d1
  8163.         move.b    sc_WBorRight(a0),d1
  8164.         add.w    d1,d0
  8165.         cmp.w    sc_Width(a0),d0
  8166.         bls.s    .WOk
  8167.         move.w    sc_Width(a0),d0
  8168.         sub.w    d4,d0
  8169.         move.w    d0,d2
  8170. .WOk        move.l    d3,d0
  8171.         DOLIB    ComputeY
  8172.         move.l    d0,d4
  8173.         move.w    TagScrWinTop(a4),d3
  8174.         move.l    -4(a5),a3
  8175.         move.w    sc_TopEdge(a3),d5
  8176.         neg.w    d5
  8177.         add.w    d5,d3
  8178.         add.w    d3,d0
  8179.         add.w    OffY(a5),d0
  8180.         moveq    #0,d1
  8181.         move.b    sc_WBorBottom(a0),d1
  8182.         add.w    d1,d0
  8183.         cmp.w    sc_Height(a0),d0
  8184.         bls.s    .HOk
  8185.         move.w    sc_Height(a0),d0
  8186.         sub.w    d4,d0
  8187.         move.w    d0,d3
  8188. .HOk        lea.l    TagScrGadget(a4),a0
  8189.         RELLIB    CreateContext,_GadToolsBase
  8190.         move.l    d0,a3
  8191.         beq    .TagScrWinError
  8192.  
  8193.         movem.l d2-d3/a4,-(sp)
  8194.         moveq    #0,d3
  8195.         lea.l    TagScrWinGTags,a4
  8196. .TagScrWinGL    lea.l    TagScrWinNGads,a0
  8197.         move.l    d3,d0
  8198.         mulu    #gng_SIZEOF,d0
  8199.         add.l    d0,a0
  8200.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  8201.         moveq    #gng_SIZEOF,d0
  8202.         CALLSYS    CopyMem
  8203.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  8204.         move.l    a4,-(sp)
  8205.         move.l    ZeroBase(pc),a4
  8206.         move.l    gng_GadgetText(a0),-(sp)
  8207.         bsr    GetLocStr
  8208.         move.l    (sp)+,d7
  8209.         move.l    d7,gng_GadgetText(a0)
  8210.         move.l    TagScrVisInfo(a4),gng_VisualInfo(a0)
  8211.         move.l    FontPtr(a5),gng_TextAttr(a0)
  8212.         move.w    gng_LeftEdge(a0),d0
  8213.         RELLIB    ComputeX,_KCXBase
  8214.         add.w    OffX(a5),d0
  8215.         move.w    d0,gng_LeftEdge(a0)
  8216.         move.w    gng_TopEdge(a0),d0
  8217.         DOLIB    ComputeY
  8218.         add.w    OffY(a5),d0
  8219.         move.w    d0,gng_TopEdge(a0)
  8220.         move.w    gng_Width(a0),d0
  8221.         DOLIB    ComputeX
  8222.         move.w    d0,gng_Width(a0)
  8223.         move.w    gng_Height(a0),d0
  8224.         DOLIB    ComputeY
  8225.         move.l    (sp)+,a4
  8226.         move.w    d0,gng_Height(a0)
  8227.         lea.l    TagScrWinGTypes,a0
  8228.         moveq    #0,d0
  8229.         move.l    d3,d1
  8230.         lsl.l    #1,d1
  8231.         move.w    0(a0,d1.w),d0
  8232.         move.l    a3,a0
  8233.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  8234.         move.l    a4,a2
  8235.         move.l    a4,-(sp)
  8236.         move.l    ZeroBase(pc),a4
  8237.         RELLIB    CreateGadgetA,_GadToolsBase
  8238.         move.l    (sp)+,a4
  8239.         tst.l    d0
  8240.         beq    .TagScrWinError
  8241.         move.l    d0,a3
  8242.         move.l    d7,a0
  8243.         bsr    LocalizeGadKey
  8244.         move.l    d1,gg_UserData(a3)
  8245.         cmp.w    #GD_TagTaskName,d3
  8246.         bne.s    .NoName
  8247.         move.l    d0,TagScrTaskName+4
  8248. .NoName        move.l    d3,d0
  8249.         lsl.l    #2,d0
  8250.         move.l    a4,-(sp)
  8251.         move.l    ZeroBase(pc),a4
  8252.         lea.l    TagScrGads(a4),a0
  8253.         move.l    (sp)+,a4
  8254.         move.l    a3,0(a0,d0.w)
  8255. .TagScrWinTL    tst.l    (a4)
  8256.         beq.s    .TagScrWinDN
  8257.         addq.w    #8,a4
  8258.         bra.s    .TagScrWinTL
  8259. .TagScrWinDN    addq.w    #4,a4
  8260.         addq.w    #1,d3
  8261.         cmp.w    #TagScrWin_CNT,d3
  8262.         bmi    .TagScrWinGL
  8263.         movem.l (sp)+,d2-d3/a4
  8264.         move.l    TagScrGadget(a4),TagScrWinWG+4
  8265.  
  8266.         lea    TagScrGads(a4),a0
  8267.         bsr    SetStrIntGads
  8268.  
  8269.         LOCLEA    TagScrWinWTitle,TagScrWinWG+12
  8270.         LOCLEA    WindowScrTitle,TagScrWinWG+20
  8271.         move.l    -4(a5),TagScrWinSC+4        ; Open window
  8272.         ext.l    d2
  8273.         ext.l    d3
  8274.         move.l    d2,TagScrWinL+4
  8275.         move.l    d3,TagScrWinT+4
  8276.         move.l    -4(a5),a0
  8277.         move.w    TagScrWinWidth(a4),d0
  8278.         RELLIB    ComputeX,_KCXBase
  8279.         add.w    OffX(a5),d0
  8280.         moveq    #0,d1
  8281.         move.b    sc_WBorRight(a0),d1
  8282.         add.w    d1,d0
  8283.         move.l    d0,TagScrWinW+4
  8284.         move.w    TagScrWinHeight(a4),d0
  8285.         DOLIB    ComputeY
  8286.         add.w    OffY(a5),d0
  8287.         moveq    #0,d1
  8288.         move.b    sc_WBorBottom(a0),d1
  8289.         add.w    d1,d0
  8290.         move.l    d0,TagScrWinH+4
  8291.         suba.l    a0,a0
  8292.         lea.l    TagScrWinWindowTags,a1
  8293.         RELLIB    OpenWindowTagList,_IntuitionBase
  8294.         move.l    d0,TagScrHandle(a4)
  8295.         beq.s    .TagScrWinError
  8296.         move.l    d0,a0
  8297.         move.l    WindowPort(a4),wd_UserPort(a0)
  8298.         move.l    #TAGSCRWINIDCMP,d0
  8299.         DOLIB    ModifyIDCMP
  8300.  
  8301.         move.w    #-1,TagScrEntry(a4)
  8302.         bsr.s    SetTagScrGads
  8303.  
  8304.         move.l    TagScrHandle(a4),a0
  8305.         suba.l    a1,a1
  8306.         RELLIB    GT_RefreshWindow,_GadToolsBase
  8307.  
  8308.         bsr    UnlockScreen
  8309.         unlk    a5
  8310.         rts
  8311. .TagScrWinError    bsr.s    CloseTagScrWin
  8312.         move.l    #MEMORY_ERR,ErrorPrefs(a4)
  8313.         bsr    DisplayError
  8314.         bsr    UnlockScreen
  8315.         unlk    a5
  8316.         rts
  8317.  
  8318.  
  8319.  
  8320.  
  8321. **********************************************************************
  8322. *                      Close Preferences window                      *
  8323. **********************************************************************
  8324. CloseTagScrWin    lea    TagScrHandle(a4),a3
  8325.         bra    CloseAWindow
  8326.  
  8327.  
  8328.  
  8329. **********************************************************************
  8330. *                       Set TagScreen Gadgets                        *
  8331. **********************************************************************
  8332. SetTagScrGads    move.b    TagScreens(a4),d0
  8333.         move.l    #GD_TagScreensOn,d1
  8334.         bsr    SetTagScrBox
  8335.  
  8336.         moveq    #1,d1
  8337. OffTagTaskGads    move.l    #GD_TagAutoScr,d0
  8338.         lea    TagScrGads(a4),a0
  8339.         move.l    TagScrHandle(a4),a1
  8340.         RELLIB    GhostGadget,_KCXBase
  8341.         move.l    #GD_TagHardPatch,d0
  8342.         DOLIB    GhostGadget
  8343.         move.l    #GD_TagNoMon,d0
  8344.         DOLIB    GhostGadget
  8345.         move.l    #GD_TagNoFnt,d0
  8346.         DOLIB    GhostGadget
  8347.         move.l    #GD_TagSAPens,d0
  8348.         DOLIB    GhostGadget
  8349.         move.l    #GD_TagScrMode,d0
  8350.         DOLIB    GhostGadget
  8351.         move.l    #GD_TagScrHeight,d0
  8352.         DOLIB    GhostGadget
  8353.         move.l    #GD_TagScrWidth,d0
  8354.         DOLIB    GhostGadget
  8355.         move.l    #GD_SelectTagTask,d0
  8356.         DOLIB    GhostGadget
  8357.         move.l    #GD_RemTagTsk,d0
  8358.         DOLIB    GhostGadget
  8359.         move.l    #GD_TagTaskName,d0
  8360.         DOLIB    GhostGadget
  8361.         move.l    #GD_TagCenterScr,d0
  8362.         DOLIB    GhostGadget
  8363.         move.l    #GD_TagSystemPens,d0
  8364.         DOLIB    GhostGadget
  8365.         move.b    d1,d2
  8366.         tst.b    d1
  8367.         bne.s    .DoBorderDis
  8368.         moveq    #0,d1
  8369.         move.b    BlackBorderOk(a4),d1
  8370.         not.b    d1
  8371. .DoBorderDis    move.l    #GD_TagBlackBorder,d0
  8372.         DOLIB    GhostGadget
  8373.         move.b    d2,d1
  8374.         tst.b    d1
  8375.         bne.s    .DoOS3TagsDis
  8376.         moveq    #0,d1
  8377.         move.b    OS3TagsOk(a4),d1
  8378.         not.b    d1
  8379. .DoOS3TagsDis    move.l    #GD_TagInterleave,d0
  8380.         DOLIB    GhostGadget
  8381.         move.l    #GD_TagLikeWB,d0
  8382.         DOLIB    GhostGadget
  8383.         move.w    TagScrEntry(a4),d0
  8384.         bsr    GetTagScrEntry
  8385.         move.l    a1,d0
  8386.         beq.s    .NoEntry
  8387.         moveq    #0,d1
  8388.         cmp.l    GlobalTagAdr(a4),d0
  8389.         bne.s    .NoOff
  8390.         moveq    #1,d1
  8391. .NoOff        move.l    #GD_TagTaskName,d0
  8392.         lea    TagScrGads(a4),a0
  8393.         move.l    TagScrHandle(a4),a1
  8394.         RELLIB    GhostGadget,_KCXBase
  8395. .NoEntry    moveq    #0,d1
  8396.         tst.l    GlobalTagAdr(a4)
  8397.         beq.s    .OnGlobal
  8398.         moveq    #1,d1
  8399. .OnGlobal    move.l    #GD_AddTagGlobal,d0
  8400.         lea    TagScrGads(a4),a0
  8401.         move.l    TagScrHandle(a4),a1
  8402.         RELLIB    GhostGadget,_KCXBase
  8403.         move.w    TagScrEntry(a4),d0
  8404.         bsr    GetTagScrEntry
  8405.         move.l    a1,d0
  8406.         beq.s    .NoGlobEntry
  8407.         moveq    #0,d1
  8408.         cmp.l    GlobalTagAdr(a4),a1
  8409.         bne.s    .NoSelOff
  8410.         moveq    #1,d1
  8411. .NoSelOff    move.l    #GD_SelectTagTask,d0
  8412.         lea    TagScrGads(a4),a0
  8413.         move.l    TagScrHandle(a4),a1
  8414.         DOLIB    GhostGadget
  8415. .NoGlobEntry    move.l    TagScrHandle(a4),d0
  8416.         beq.s    .End
  8417.         move.l    d0,a0
  8418.         sub.l    a1,a1
  8419.         RELLIB    GT_RefreshWindow,_GadToolsBase
  8420. .End        rts
  8421. SetTagScrBox    lea    TagScrGads(a4),a0
  8422.         move.l    TagScrHandle(a4),a1
  8423.         RELLIB    SetCheckBox,_KCXBase
  8424.         rts
  8425. SetTagScrInt    lea    TagScrGads(a4),a0
  8426.         move.l    TagScrHandle(a4),a1
  8427.         RELLIB    SetIntegerGad,_KCXBase
  8428.         rts
  8429. **********************************************************************
  8430. *                      Set gadgets of one entry                      *
  8431. **********************************************************************
  8432. SetTagEntryGads    movem.l    RegsAll,-(sp)
  8433.         move.w    TagScrEntry(a4),d0
  8434.         bsr    GetTagScrEntry
  8435.         move.l    a1,d0
  8436.         beq    .End
  8437.         move.l    a1,a3
  8438.         move.b    tagscr_Font(a3),d0
  8439.         move.l    #GD_TagNoFnt,d1
  8440.         lea    TagScrGads(a4),a0
  8441.         move.l    TagScrHandle(a4),a1
  8442.         RELLIB    SetCheckBox,_KCXBase
  8443.         move.b    tagscr_AutoScroll(a3),d0
  8444.         move.l    #GD_TagAutoScr,d1
  8445.         DOLIB    SetCheckBox
  8446.         move.b    tagscr_Monitor(a3),d0
  8447.         move.l    #GD_TagNoMon,d1
  8448.         DOLIB    SetCheckBox
  8449.         move.b    tagscr_HardPatch(a3),d0
  8450.         move.l    #GD_TagHardPatch,d1
  8451.         DOLIB    SetCheckBox
  8452.         move.b    tagscr_Pens(a3),d0
  8453.         move.l    #GD_TagSAPens,d1
  8454.         DOLIB    SetCheckBox
  8455.         move.b    tagscr_CenterScr(a3),d0
  8456.         move.l    #GD_TagCenterScr,d1
  8457.         DOLIB    SetCheckBox
  8458.         move.b    tagscr_BlackBorder(a3),d0
  8459.         move.l    #GD_TagBlackBorder,d1
  8460.         DOLIB    SetCheckBox
  8461.         move.b    tagscr_Interleave(a3),d0
  8462.         move.l    #GD_TagInterleave,d1
  8463.         DOLIB    SetCheckBox
  8464.         move.b    tagscr_LikeWB(a3),d0
  8465.         move.l    #GD_TagLikeWB,d1
  8466.         DOLIB    SetCheckBox
  8467.         move.b    tagscr_SystemPens(a3),d0
  8468.         move.l    #GD_TagSystemPens,d1
  8469.         DOLIB    SetCheckBox
  8470.         move.l    #GD_TagScrHeight,d0
  8471.         move.l    tagscr_Height(a3),d1
  8472.         DOLIB    SetIntegerGad
  8473.         move.l    #GD_TagScrWidth,d0
  8474.         move.l    tagscr_Width(a3),d1
  8475.         DOLIB    SetIntegerGad
  8476.         moveq    #0,d1
  8477.         tst.b    tagscr_LikeWB(a3)
  8478.         beq.s    .NotLikeWB
  8479.         moveq    #1,d1
  8480. .NotLikeWB    move.l    #GD_TagNoMon,d0
  8481.         DOLIB    GhostGadget
  8482.         tst.b    tagscr_LikeWB(a3)
  8483.         bne.s    .OffMonGads
  8484.         moveq    #0,d1
  8485.         tst.b    tagscr_Monitor(a3)
  8486.         bne.s    .OnMonGads
  8487. .OffMonGads    moveq    #1,d1
  8488. .OnMonGads    move.l    #GD_TagScrMode,d0
  8489.         DOLIB    GhostGadget
  8490.         move.l    #GD_TagScrHeight,d0
  8491.         DOLIB    GhostGadget
  8492.         move.l    #GD_TagScrWidth,d0
  8493.         DOLIB    GhostGadget
  8494.         link    a5,#-nif_SIZEOF
  8495.         sub.l    a0,a0
  8496.         lea    -nif_SIZEOF(a5),a1
  8497.         move.l    #nif_SIZEOF,d0
  8498.         move.l    #DTAG_NAME,d1
  8499.         move.l    tagscr_DisplayID(a3),d2
  8500.         RELLIB    GetDisplayInfoData,_GfxBase
  8501.         lea    -nif_SIZEOF(a5),a0
  8502.         lea    nif_Name(a0),a0
  8503.         lea    TagScrModeName(a4),a1
  8504.         bsr    StrCpy
  8505.         unlk    a5
  8506.         move.l    #GD_TagScrModeType,d0
  8507.         lea    TagScrGads(a4),a0
  8508.         move.l    TagScrHandle(a4),a1
  8509.         lea    TagScrModeName(a4),a2
  8510.         RELLIB    SetTextGad,_KCXBase
  8511. .End        movem.l    (sp)+,RegsAll
  8512.         rts
  8513.  
  8514.  
  8515.  
  8516. **********************************************************************
  8517. *                    This part closes our window                     *
  8518. **********************************************************************
  8519. CloseAWindow    tst.l    (a3)
  8520.         beq.s    NoWindow2Close
  8521.         CALLSYS    Forbid                ; Free all messages for that window
  8522.         move.l    (a3),a0
  8523.         move.l    wd_UserPort(a0),a0
  8524.         lea    MP_MSGLIST(a0),a0
  8525.         TSTLIST    a0
  8526.         beq.s    .End
  8527.         move.l    LH_HEAD(a0),a5
  8528. .Loop        move.l    a5,d0
  8529.         beq.s    .End
  8530.         lea    im_ExecMessage(a5),a0
  8531.         move.l    LN_SUCC(a5),-(sp)
  8532.         move.l    im_IDCMPWindow(a5),d0
  8533.         cmp.l    (a3),d0
  8534.         bne.s    .GoOn
  8535.         move.l    a5,a1
  8536.         DOLIB    Remove
  8537.         move.l    a5,a1
  8538.         DOLIB    ReplyMsg
  8539. .GoOn        move.l    (sp)+,a5
  8540.         bra.s    .Loop
  8541. .End        move.l    (a3),a0
  8542.         clr.l    wd_UserPort(a0)
  8543.         moveq    #0,d0
  8544.         RELLIB    ModifyIDCMP,_IntuitionBase
  8545.         CALLSYS    Permit
  8546.         move.l    (a3),a0
  8547.         RELLIB    CloseWindow,_IntuitionBase    ; Close Window
  8548. NoWindow2Close    tst.l    4(a3)
  8549.         beq.s    GotNoGadgets
  8550.         move.l    4(a3),a0            ; Free GadTools-Gadgets
  8551.         RELLIB    FreeGadgets,_GadToolsBase
  8552. GotNoGadgets    tst.l    8(a3)                ; Free Visual-Info
  8553.         beq.s    NoVisInfo
  8554.         move.l    8(a3),a0
  8555.         RELLIB    FreeVisualInfo,_GadToolsBase
  8556. NoVisInfo    clr.l    (a3)                ; Clear flags for later
  8557.         clr.l    4(a3)                ; identification
  8558.         clr.l    8(a3)
  8559.         rts
  8560.  
  8561.  
  8562.  
  8563. **********************************************************************
  8564. *            Close down a window with a non-shared IDCMP             *
  8565. **********************************************************************
  8566. CloseNormWindow    tst.l    (a3)
  8567.         beq.s    .NoWindow
  8568.         move.l    (a3),a0
  8569.         RELLIB    CloseWindow,_IntuitionBase    ; Close Window
  8570. .NoWindow    tst.l    4(a3)
  8571.         beq.s    .NoGadgets
  8572.         move.l    4(a3),a0            ; Free GadTools-Gadgets
  8573.         RELLIB    FreeGadgets,_GadToolsBase
  8574. .NoGadgets    tst.l    8(a3)                ; Free Visual-Info
  8575.         beq.s    .NoVisInfo
  8576.         move.l    8(a3),a0
  8577.         RELLIB    FreeVisualInfo,_GadToolsBase
  8578. .NoVisInfo    clr.l    (a3)                ; Clear flags for later
  8579.         clr.l    4(a3)                ; identification
  8580.         clr.l    8(a3)
  8581.         rts
  8582.  
  8583.  
  8584. **********************************************************************
  8585. *                    Close all remaining windows                     *
  8586. **********************************************************************
  8587. CloseWins    bsr    CloseTagScrWin            ; Close control windows
  8588.         bsr    CloseLockWin
  8589.         bsr    ClosePrefsWin
  8590.         bsr    CloseFKeyWin
  8591.         bsr    CloseHotKeyWin
  8592.         bsr    CloseMouseWin
  8593.         bsr    CloseClockDefWin
  8594.         bsr    CloseBlankWin
  8595.         bsr    CloseCycleWin
  8596.         bsr    CloseAlarmWin
  8597.         bsr    CloseMiscWin
  8598.         bsr    CloseSetWin
  8599.         bsr    CloseMainWin
  8600.         clr.w    AbortPrefs(a4)
  8601.         rts
  8602.  
  8603.  
  8604.  
  8605. **********************************************************************
  8606. *                        Compare two strings                         *
  8607. **********************************************************************
  8608. StrCmp        moveq    #0,d0
  8609.         moveq    #0,d1
  8610.         movem.l    a0/a1,-(sp)            ; Store pointers
  8611. .Loop        move.b    (a0)+,d0            ; get chars
  8612.         move.b    (a1)+,d1
  8613.         tst.b    d0                ; Source string ended ?
  8614.         beq.s    .EndSrc                ; yep -> final check
  8615.         cmp.b    #$0a,d0                ; a newline ?
  8616.         beq.s    .EndSrc                ; yep -> final check
  8617.         or.b    #$20,d0                ; make case-insensitive
  8618.         or.b    #$20,d1
  8619.         cmp.b    d0,d1                ; equal ?
  8620.         bne.s    .Invalid
  8621.         dbf    d7,.Loop
  8622.         movem.l    (sp)+,a0/a1
  8623.         moveq    #0,d0
  8624.         rts
  8625. .Invalid    moveq    #1,d0                ; Error flag
  8626.         movem.l    (sp)+,a0/a1
  8627.         rts
  8628. .EndSrc        cmp.b    d0,d1                ; last chars equal ?
  8629.         bne.s    .Invalid            ; Nope -> error
  8630.         moveq    #0,d0                ; a ok
  8631.         movem.l    (sp)+,a0/a1
  8632.         rts
  8633.  
  8634.  
  8635. **********************************************************************
  8636. *               Compare two strings (case sensitive)                 *
  8637. **********************************************************************
  8638. StrCmp2        moveq    #0,d0
  8639.         moveq    #0,d1
  8640.         movem.l    a0/a1,-(sp)            ; Store pointers
  8641. .Loop        move.b    (a0)+,d0            ; get chars
  8642.         move.b    (a1)+,d1
  8643.         tst.b    d0                ; Source string ended ?
  8644.         beq.s    .EndSrc                ; yep -> final check
  8645.         cmp.b    #$0a,d0                ; a newline ?
  8646.         beq.s    .EndSrc                ; yep -> final check
  8647.         cmp.b    d0,d1                ; equal ?
  8648.         bne.s    .Invalid
  8649.         dbf    d7,.Loop
  8650.         movem.l    (sp)+,a0/a1
  8651.         moveq    #0,d0
  8652.         rts
  8653. .Invalid    moveq    #1,d0                ; Error flag
  8654.         movem.l    (sp)+,a0/a1
  8655.         rts
  8656. .EndSrc        cmp.b    d0,d1                ; last chars equal ?
  8657.         bne.s    .Invalid            ; Nope -> error
  8658.         moveq    #0,d0                ; a ok
  8659.         movem.l    (sp)+,a0/a1
  8660.         rts
  8661.  
  8662. **********************************************************************
  8663. *                           Copy a string                            *
  8664. **********************************************************************
  8665. StrCpy        move.b    (a0)+,d0
  8666.         move.b    d0,(a1)+
  8667.         tst.b    d0
  8668.         beq.s    .End
  8669.         bra.s    StrCpy
  8670. .End        rts
  8671.  
  8672.  
  8673. **********************************************************************
  8674. *                          Concat 2 string                           *
  8675. **********************************************************************
  8676. StrCat        tst.b    (a1)+
  8677.         beq.s    .Loop
  8678.         bra    StrCat
  8679. .Loop        subq.l    #1,a1
  8680.         bra    StrCpy
  8681.  
  8682.  
  8683. **********************************************************************
  8684. *            Copy a string up to x chars or end of string            *
  8685. **********************************************************************
  8686. StrNCpy        move.b    (a0)+,d0
  8687.         move.b    d0,(a1)+
  8688.         tst.b    d0
  8689.         beq.s    .End
  8690.         dbf    d7,StrNCpy
  8691. .End        rts
  8692.  
  8693.  
  8694. **********************************************************************
  8695. *                      Calc length of a string                       *
  8696. **********************************************************************
  8697. StrLen        move.l    a0,-(sp)
  8698.         moveq    #0,d0
  8699. .Loop        tst.b    (a0)+
  8700.         beq.s    .End
  8701.         addq.w    #1,d0
  8702.         bne.s    .Loop
  8703. .End        move.l    (sp)+,a0
  8704.         rts
  8705.  
  8706.  
  8707.  
  8708.  
  8709. **********************************************************************
  8710. *           Store new position of window within NewWindow            *
  8711. **********************************************************************
  8712. StoreWinPos    move.w    wd_LeftEdge(a0),0(a1)
  8713.         move.w    wd_TopEdge(a0),2(a1)
  8714.         rts
  8715.  
  8716.  
  8717.  
  8718.  
  8719. **********************************************************************
  8720. *                   Get address of selected entry                    *
  8721. * D0 = Number of entry                                               *
  8722. * RESULT : A1 = Address of entry or NULL                             *
  8723. **********************************************************************
  8724. GetEntry    movem.l    d1-d7/a2-a6,-(sp)
  8725.         tst.b    LockListType(a4)
  8726.         beq.s    .GetWindowEntry
  8727.         lea    TaskWinBase(a4),a0
  8728.         bra.s    .DoGet
  8729. .GetWindowEntry    lea    WindowBase(a4),a0
  8730. .DoGet        SUCC    a0,a0
  8731.         sub.l    a1,a1
  8732.         tst.w    d0
  8733.         blt.s    .Done
  8734. .Loop        TSTLST2    a0,a2
  8735.         beq.s    .Done
  8736.         tst.w    d0
  8737.         beq.s    .GotIt
  8738.         move.l    a0,d1
  8739.         beq.s    .Done
  8740.         SUCC    a0,a0
  8741.         subq.w    #1,d0
  8742.         bra.s    .Loop
  8743. .GotIt        move.l    a0,a1
  8744. .Done        movem.l    (sp)+,d1-d7/a2-a6
  8745.         rts
  8746.  
  8747.  
  8748.  
  8749. **********************************************************************
  8750. *              Get address of selected TagScreens entry              *
  8751. * D0 = Number of entry                                               *
  8752. * RESULT : A1 = Address of entry or NULL                             *
  8753. **********************************************************************
  8754. GetTagScrEntry    movem.l    d1-d7/a2-a6,-(sp)
  8755.         sub.l    a1,a1
  8756.         lea    TagScrsTasks(a4),a0
  8757.         TSTLST2    a0,a2
  8758.         beq.s    .Done
  8759.         tst.w    d0
  8760.         blt.s    .Done
  8761.         move.l    MLH_HEAD(a0),a0
  8762. .Loop        TSTLST2    a0,a2
  8763.         beq.s    .Done
  8764.         tst.w    d0
  8765.         beq.s    .GotIt
  8766.         move.l    a0,d1
  8767.         beq.s    .Done
  8768.         SUCC    a0,a0
  8769.         subq.w    #1,d0
  8770.         bra.s    .Loop
  8771. .GotIt        move.l    a0,a1
  8772. .Done        movem.l    (sp)+,d1-d7/a2-a6
  8773.         rts
  8774.  
  8775.  
  8776. **********************************************************************
  8777. *                 String/Integer Gadget pens setten                  *
  8778. **********************************************************************
  8779. SetStrIntGads    movem.l    RegsAll,-(sp)
  8780.  
  8781. .Loop        move.l    (a0),d0
  8782.         beq.s    .End
  8783.         move.l    (a0)+,a1
  8784.         move.w    gg_GadgetType(a1),d0
  8785.         and.w    #GTYP_STRGADGET,d0
  8786.         beq.s    .NoStrGad
  8787.         move.l    gg_SpecialInfo(a1),a1
  8788.         move.l    si_Extension(a1),a1
  8789.         move.w    #$0102,sex_ActivePens(a1)
  8790. .NoStrGad    bra.s    .Loop
  8791. .End        movem.l    (sp)+,RegsAll
  8792.         rts
  8793.  
  8794.  
  8795.  
  8796.  
  8797. **********************************************************************
  8798. *                     Lock the Workbench-Screen                      *
  8799. **********************************************************************
  8800. LockScreen    lea    WBScrName(pc),a0
  8801.         RELLIB    LockPubScreen,_IntuitionBase
  8802.         move.l    d0,-4(a5)
  8803.         rts
  8804. WBScrName    dc.b    "Workbench",0
  8805.         EVEN
  8806.  
  8807.  
  8808. **********************************************************************
  8809. *                      Unlock the locked screen                      *
  8810. **********************************************************************
  8811. UnlockScreen    tst.l    -4(a5)
  8812.         beq.s    .End
  8813.         sub.l    a0,a0
  8814.         move.l    -4(a5),a1
  8815.         RELLIB    UnlockPubScreen,_IntuitionBase
  8816. .End        rts
  8817.  
  8818.  
  8819.  
  8820.  
  8821.  
  8822. **********************************************************************
  8823. *        Display the correct time for the two slider gadgets         *
  8824. **********************************************************************
  8825. ShowTime    movem.l    d1-d7/a0-a6,-(sp)
  8826.         link    a5,#-8                ; Get buffer for variables
  8827.         move.l    68(a5),d0            ; Get number
  8828.         move.l    ZeroBase(pc),a4            ; Recalculate
  8829.         divu    #6,d0
  8830.         move.w    d0,d1
  8831.         swap    d0
  8832.         and.l    #$0000ffff,d0
  8833.         and.l    #$0000ffff,d1
  8834.         mulu    #10,d0
  8835.         move.l    d1,-8(a5)
  8836.         move.l    d0,-4(a5)
  8837.         lea    FormLongNSStr,a0        ; Format
  8838.         lea    -8(a5),a1
  8839.         lea    PutChProc,a2
  8840.         lea    HourStr(a4),a3
  8841.         CALLSYS    RawDoFmt
  8842.         lea    HourStr(a4),a0
  8843.         move.l    a0,d0
  8844.         unlk    a5
  8845.         movem.l    (sp)+,d1-d7/a0-a6
  8846.         rts
  8847.  
  8848.  
  8849. **********************************************************************
  8850. *                         Display alarm time                         *
  8851. **********************************************************************
  8852. ShowAlarm    movem.l    d1-d7/a0-a6,-(sp)
  8853.         link    a5,#-8                ; Get buffer for variables
  8854.         move.l    68(a5),d0            ; Get number
  8855.         move.l    ZeroBase(pc),a4            ; Recalculate
  8856.         divu    #60,d0
  8857.         move.w    d0,d1
  8858.         swap    d0
  8859.         and.l    #$0000ffff,d0
  8860.         and.l    #$0000ffff,d1
  8861.         move.l    d1,-8(a5)
  8862.         move.l    d0,-4(a5)
  8863.         lea    FormLongNSStr,a0        ; Format
  8864.         lea    -8(a5),a1
  8865.         lea    PutChProc,a2
  8866.         lea    HourStr(a4),a3
  8867.         CALLSYS    RawDoFmt
  8868.         lea    HourStr(a4),a0
  8869.         move.l    a0,d0
  8870.         unlk    a5
  8871.         movem.l    (sp)+,d1-d7/a0-a6
  8872.         rts
  8873.  
  8874.  
  8875. **********************************************************************
  8876. *            Signal the timer process to remake the time             *
  8877. **********************************************************************
  8878. SigTime        move.l    CheckerProc(a4),a1
  8879.         move.l    a1,d0
  8880.         beq.s    .End
  8881.         move.l    #SIGTIMEREMAKE,d0
  8882.         CALLSYS    Signal
  8883. .End        rts
  8884.  
  8885.  
  8886.  
  8887. **********************************************************************
  8888. *                Send TitleBar-Clear command to buddy                *
  8889. **********************************************************************
  8890. ClearTitleBar    move.l    BackPort(a4),a0
  8891.         move.l    PrefsPort(a4),a1
  8892.         move.l    #COM_CLEARTITLE,d0
  8893.         RELLIB    ComPut,_KCXBase
  8894.         rts
  8895.  
  8896.  
  8897. **********************************************************************
  8898. *           Send buddy a command to close the clock window           *
  8899. **********************************************************************
  8900. CloseClockWin    move.l    BackPort(a4),a0
  8901.         move.l    PrefsPort(a4),a1
  8902.         move.l    #COM_CLOSECLOCK,d0
  8903.         RELLIB    ComPut,_KCXBase
  8904.         rts
  8905.  
  8906.  
  8907.  
  8908. **********************************************************************
  8909. *                 Tell buddy to start clicking again                 *
  8910. **********************************************************************
  8911. SetNoClick    move.l    BackPort(a4),a0
  8912.         move.l    PrefsPort(a4),a1
  8913.         move.l    #COM_SETNOCLICK,d0
  8914.         RELLIB    ComPut,_KCXBase
  8915.         rts
  8916.  
  8917.  
  8918.  
  8919.  
  8920. **********************************************************************
  8921. *                     Send Enable-Broker command                     *
  8922. **********************************************************************
  8923. EnableBroker    move.l    BackPort(a4),a0
  8924.         move.l    PrefsPort(a4),a1
  8925.         move.l    #COM_ENABLE,d0
  8926.         RELLIB    ComPut,_KCXBase
  8927.         rts
  8928.  
  8929.  
  8930.  
  8931.  
  8932. **********************************************************************
  8933. *                Send Disable-Broker command to buddy                *
  8934. **********************************************************************
  8935. DisableBroker    move.l    BackPort(a4),a0
  8936.         move.l    PrefsPort(a4),a1
  8937.         move.l    #COM_DISABLE,d0
  8938.         RELLIB    ComPut,_KCXBase
  8939.         rts
  8940.  
  8941.  
  8942.  
  8943. **********************************************************************
  8944. *                Display the total sum of phone calls                *
  8945. **********************************************************************
  8946. DisplayTotalSum    lea    LogFileName(a4),a0
  8947.         move.l    a0,d1                ; First check size of file
  8948.         move.l    #ACCESS_READ,d2
  8949.         RELLIB    Lock,_DOSBase
  8950.         move.l    d0,d7
  8951.         tst.l    d0                ; IS IT THERE ?
  8952.         bne.s    .GotFile
  8953.         rts
  8954. .GotFile    link    a5,#-fib_SIZEOF            ; Get FIB
  8955.         lea    -fib_SIZEOF(a5),a0
  8956.         move.l    d7,d1                ; Get FileInfo
  8957.         move.l    a0,d2
  8958.         DOLIB    Examine
  8959.         move.l    d7,d1
  8960.         DOLIB    UnLock                ; Unlock file
  8961.         lea    -fib_SIZEOF(a5),a0        ; Check size
  8962.         tst.l    fib_Size(a0)            ; on zero quit
  8963.         bne.s    .SizeOk
  8964.         unlk    a5
  8965.         rts
  8966. .SizeOk        unlk    a5
  8967.  
  8968.         link    a5,#-(LOGENTRYSIZE*2+128)    ; Get buffer for a log-entry
  8969.  
  8970.         sub.l    a0,a0
  8971.         lea    MyEasyRequest(pc),a1
  8972.         LOCLEA    FileWinTxt(pc),a2
  8973.         move.l    a2,es_TextFormat(a1)
  8974.         LOCLEA    FileWinGads(pc),a2
  8975.         move.l    a2,es_GadgetFormat(a1)
  8976.         sub.l    a2,a2
  8977.         sub.l    a3,a3
  8978.         RELLIB    EasyRequestArgs,_IntuitionBase
  8979.         tst.l    d0
  8980.         beq.s    .DisplayWin
  8981.         move.b    #1,SumToFile(a4)
  8982.  
  8983.         lea    -(LOGENTRYSIZE*2+128)(a5),a0
  8984.         clr.l    (a0)
  8985.  
  8986.         pea    0
  8987.         pea    FRF_DOSAVEMODE
  8988.         pea    0
  8989.         clr.w    -(sp)
  8990.         pea    -(LOGENTRYSIZE*2+128)(a5)
  8991.         LOCLEA    FileWinHead,d0
  8992.         move.l    d0,-(sp)
  8993.         move.l    PrefsHandle(a4),-(sp)
  8994.         bsr    GetFileName
  8995.         lea    26(sp),sp
  8996.         tst.l    d0
  8997.         beq    .EndTotSum
  8998.  
  8999.         lea    -(LOGENTRYSIZE*2+128)(a5),a0
  9000.         move.l    a0,d1
  9001.         move.l    #MODE_NEWFILE,d2
  9002.         RELLIB    Open,_DOSBase
  9003.         move.l    d0,TempHand(a4)
  9004.         tst.l    d0
  9005.         bne.s    .GoOnDisplay
  9006.         DOLIB    IoErr
  9007.         move.l    d0,ErrorPrefs(a4)
  9008.         bsr    DisplayError
  9009.         bra    .EndTotSum
  9010.  
  9011. .DisplayWin    clr.b    SumToFile(a4)
  9012.         LOCLEA    ConWinDef(pc),a0
  9013.         move.l    a0,d1                ; Open CON: Window
  9014.         move.l    #MODE_OLDFILE,d2
  9015.         RELLIB    Open,_DOSBase
  9016.         move.l    d0,TempHand(a4)
  9017.         tst.l    d0
  9018.         beq    .EndTotSum
  9019.  
  9020.         move.l    TempHand(a4),d1
  9021.         move.l    #ClearStr,d2
  9022.         move.l    #ClearStrLen,d3
  9023.         DOLIB    Write
  9024.  
  9025. .GoOnDisplay    lea    LogFileName(a4),a0
  9026.         move.l    a0,d1                ; Open Log file
  9027.         move.l    #MODE_OLDFILE,d2
  9028.         DOLIB    Open
  9029.         move.l    d0,FileHand(a4)
  9030.         tst.l    d0
  9031.         beq    .EndTotSum
  9032.  
  9033.         moveq    #0,d7                ; Clear linenumber
  9034.         moveq    #0,d5
  9035.         move.l    d7,BillMajor            ; and cost
  9036.         move.l    d7,BillMinor
  9037.         move.l    d7,BillTotalCost
  9038.         move.l    d7,BillDayCost
  9039.  
  9040. .SumLoop    move.l    FileHand(a4),d1            ; Get one line
  9041.         lea    -(LOGENTRYSIZE*2)(a5),a0
  9042.         move.l    a0,d2
  9043.         move.l    #(LOGENTRYSIZE*2)-1,d3
  9044.         DOLIB    FGets
  9045.         tst.l    d0
  9046.         bne.s    .GoOn
  9047.         bsr    DisplayDaySum            ; Display final day costs
  9048.         moveq    #-1,d7                ; Indicate end of file
  9049.         bra.s    .EndOfAll
  9050.  
  9051. .GoOn        bsr    CheckDay
  9052.  
  9053.         move.l    TempHand(a4),d1            ; Display line
  9054.         lea    -(LOGENTRYSIZE*2)(a5),a0
  9055.         move.l    a0,d2
  9056.         DOLIB    FPuts
  9057.  
  9058.         lea    -(LOGENTRYSIZE*2)(a5),a3    ; Get start of major-cost
  9059.         lea    72(a3),a3
  9060.         move.l    a3,a2
  9061. .LoopMinor    cmp.b    #'.',(a2)+            ; find period
  9062.         beq.s    .GotMinor
  9063.         bra.s    .LoopMinor
  9064. .GotMinor    clr.b    -1(a2)                ; Extract minor cost
  9065.         clr.b    2(a2)
  9066.  
  9067.         move.l    a3,d1
  9068.         move.l    #BillMajor,d2
  9069.         DOLIB    StrToLong
  9070.         tst.l    d0
  9071.         ble    .EndTotSum
  9072.         mulu    #100,d1
  9073.         move.l    d1,d6                ; Get costs
  9074.  
  9075.         move.l    a2,d1
  9076.         move.l    #BillMinor,d2
  9077.         DOLIB    StrToLong
  9078.         tst.l    d0
  9079.         ble    .EndTotSum
  9080.         add.l    d1,d6                ; ....
  9081.         add.l    d6,BillTotalCost
  9082.         add.l    d6,BillDayCost
  9083.  
  9084.         addq.l    #1,d7                ; One line done
  9085.         cmp.l    #12,d7                ; 12 lines done ?
  9086.         blt    .SumLoop
  9087.         moveq    #0,d7                ; Reset line number
  9088. .EndOfAll    tst.l    d7                ; All lines done ?
  9089.         beq.s    .NoFinalCost
  9090.         move.l    BillTotalCost,d6
  9091.         divu    #100,d6
  9092.         move.w    d6,d5
  9093.         swap    d6
  9094.         ext.l    d6
  9095.         move.l    d6,BillMinor
  9096.         ext.l    d5
  9097.         move.l    d5,BillMajor
  9098.         LOCLEA    FinalCostForm,a0        ; Format final cost string
  9099.         lea    BillMajor,a1
  9100.         lea    PutChProc(pc),a2
  9101.         lea    -(LOGENTRYSIZE*2)(a5),a3
  9102.         CALLSYS    RawDoFmt
  9103.         move.l    TempHand(a4),d1            ; Display string
  9104.         lea    -(LOGENTRYSIZE*2)(a5),a0
  9105.         move.l    a0,d2
  9106.         RELLIB    FPuts,_DOSBase
  9107. .NoFinalCost    tst.b    SumToFile(a4)
  9108.         bne.s    .NoKey
  9109.         move.l    TempHand(a4),d1            ; Display prompt
  9110.         LOCLEA    PressKey,a0
  9111.         move.l    a0,d2
  9112.         DOLIB    FPuts
  9113.         move.l    TempHand(a4),d1            ; Wait for return
  9114.         DOLIB    FGetC
  9115. .NoKey        tst.l    d7
  9116.         blt.s    .EndTotSum
  9117.         bra    .SumLoop
  9118.  
  9119. .EndTotSum    unlk    a5                ; Free buffer
  9120.  
  9121.         tst.l    FileHand(a4)            ; Close files
  9122.         beq.s    .NoFileHand
  9123.         move.l    FileHand(a4),d1
  9124.         DOLIB    Close
  9125. .NoFileHand    tst.l    TempHand(a4)
  9126.         beq.s    .NoTempHand
  9127.         move.l    TempHand(a4),d1
  9128.         DOLIB    Close
  9129. .NoTempHand    clr.l    TempHand(a4)
  9130.         clr.l    FileHand(a4)
  9131.         moveq    #0,d0
  9132.         move.l    #SIGBREAKF_CTRL_C,d1
  9133.         CALLSYS    SetSignal
  9134.         rts
  9135.  
  9136.  
  9137.  
  9138. **********************************************************************
  9139. *                  Check for a difference in dates                   *
  9140. **********************************************************************
  9141. CheckDay    move.l    d7,d6                ; Store old line number
  9142.         tst.b    d5                ; First day read ?
  9143.         beq.s    .FirstDay
  9144.         lea    -(LOGENTRYSIZE*2)(a5),a0    ; Compare dates
  9145.         lea    BillDayStr,a1
  9146.         moveq    #8,d7
  9147.         bsr    StrCmp
  9148.         tst.l    d0
  9149.         beq.s    .End                ; On equal -> go on
  9150.         bsr.s    DisplayDaySum            ; Display sum for a day
  9151. .FirstDay    lea    -(LOGENTRYSIZE*2)(a5),a0    ; Copy date to buffer
  9152.         lea    BillDayStr,a1
  9153.         moveq    #8,d7
  9154.         bsr    StrNCpy
  9155.         moveq    #1,d5                ; Set flag
  9156. .End        move.l    d6,d7
  9157.         rts
  9158.  
  9159.  
  9160.  
  9161. **********************************************************************
  9162. *                     Display the sum for a day                      *
  9163. **********************************************************************
  9164. DisplayDaySum    movem.l    RegsAll,-(sp)
  9165.  
  9166.         link    a5,#-(LOGENTRYSIZE*2)        ; Get buffer for a line
  9167.  
  9168.         move.l    BillDayCost,d3            ; Get costs
  9169.         divu    #100,d3                ; convert `em
  9170.         move.w    d3,d4
  9171.         swap    d3
  9172.         ext.l    d3
  9173.         move.l    d3,BillMinor
  9174.         ext.l    d4
  9175.         move.l    d4,BillMajor
  9176.         LOCLEA    DayCostForm,a0            ; Format string
  9177.         lea    BillDayPtr,a1
  9178.         lea    PutChProc(pc),a2
  9179.         lea    -(LOGENTRYSIZE*2)(a5),a3
  9180.         CALLSYS    RawDoFmt
  9181.         clr.l    BillDayCost
  9182.         move.l    TempHand(a4),d1            ; Make it appear
  9183.         lea    -(LOGENTRYSIZE*2)(a5),a0
  9184.         move.l    a0,d2
  9185.         RELLIB    FPuts,_DOSBase
  9186.         addq.l    #3,d6                ; three more lines written
  9187.         unlk    a5
  9188.         movem.l    (sp)+,RegsAll
  9189.         rts
  9190.  
  9191.  
  9192. **********************************************************************
  9193. *           Display Msg that only to be run under Kick2.x            *
  9194. **********************************************************************
  9195. OnlyKick20    sub.l    a1,a1
  9196.         CALLSYS    FindTask
  9197.         move.l    d0,a0
  9198.         tst.l    pr_CLI(a0)
  9199.         beq.s    .FromWB
  9200.         lea    DosName,a1
  9201.         moveq    #0,d0
  9202.         DOLIB    OpenLibrary
  9203.         move.l    d0,a6
  9204.         DOLIB    Output
  9205.         move.l    d0,d1
  9206.         move.l    #Only20Txt,d2
  9207.         move.l    #Only20TxtEnd-Only20Txt,d3
  9208.         DOLIB    Write
  9209.         move.l    a6,a1
  9210.         CALLSYS    CloseLibrary
  9211.         rts
  9212. .FromWB        lea    IntName,a1            ; try to open IntBase
  9213.         moveq    #0,d0
  9214.         CALLSYS    OpenLibrary
  9215.         tst.l    d0
  9216.         beq.s    OnlyKick20Ret
  9217.         move.l    d0,a6
  9218.  
  9219.         sub.l    a0,a0                ; Display requester
  9220.         lea    Only20ITxt(pc),a1
  9221.         lea    OkITxt(pc),a2
  9222.         move.l    a2,a3
  9223.         moveq    #0,d0
  9224.         moveq    #0,d1
  9225.         move.l    #300,d2
  9226.         move.l    #60,d3
  9227.         DOLIB    AutoRequest
  9228.  
  9229.         move.l    a6,a1
  9230.         CALLSYS    CloseLibrary
  9231. OnlyKick20Ret    rts
  9232.  
  9233.  
  9234.  
  9235. **********************************************************************
  9236. *                          Display an error                          *
  9237. **********************************************************************
  9238. DisplayError    tst.l    ErrorPrefs(a4)
  9239.         bge.s    .GoOn
  9240.         rts
  9241. .GoOn        tst.l    _KCXBase(a4)
  9242.         beq.s    .End
  9243.         movem.l    RegsAll,-(sp)
  9244.         bsr.s    BusyAllWins
  9245.         move.l    ErrorPrefs(a4),d0
  9246.         lea    PrefsErrArg(a4),a3
  9247.         RELLIB    DisplayError,_KCXBase
  9248.         move.l    #NO_ERR,ErrorPrefs(a4)
  9249.         bsr    UnbusyAllWins
  9250.         movem.l    (sp)+,RegsAll
  9251. .End        rts
  9252.  
  9253.  
  9254.  
  9255.  
  9256. **********************************************************************
  9257. *                      Small dummy for RawDoFmt                      *
  9258. **********************************************************************
  9259. PutChProc    move.b    d0,(a3)+
  9260.         rts
  9261.  
  9262.  
  9263.  
  9264.  
  9265. **********************************************************************
  9266. *                       Busy all main windows                        *
  9267. **********************************************************************
  9268. BusyAllWins    move.l    MainHandle(a4),a0        ; Make all gadgets busy
  9269.         RELLIB    BusyWindow,_KCXBase
  9270.         move.l    SetHandle(a4),a0
  9271.         RELLIB    BusyWindow,_KCXBase
  9272.         move.l    MiscHandle(a4),a0
  9273.         RELLIB    BusyWindow,_KCXBase
  9274.         move.l    AlarmHandle(a4),a0
  9275.         RELLIB    BusyWindow,_KCXBase
  9276.         move.l    CycleHandle(a4),a0
  9277.         RELLIB    BusyWindow,_KCXBase
  9278.         move.l    ClockDefHandle(a4),a0
  9279.         RELLIB    BusyWindow,_KCXBase
  9280.         move.l    MouseHandle(a4),a0
  9281.         RELLIB    BusyWindow,_KCXBase
  9282.         move.l    HotKeyHandle(a4),a0
  9283.         RELLIB    BusyWindow,_KCXBase
  9284.         move.l    FKeyHandle(a4),a0
  9285.         RELLIB    BusyWindow,_KCXBase
  9286.         move.l    PrefsHandle(a4),a0
  9287.         RELLIB    BusyWindow,_KCXBase
  9288.         move.l    LockHandle(a4),a0
  9289.         RELLIB    BusyWindow,_KCXBase
  9290.         rts
  9291.  
  9292.  
  9293.  
  9294. **********************************************************************
  9295. *                         Unbusy all windows                         *
  9296. **********************************************************************
  9297. UnbusyAllWins    move.l    MainHandle(a4),a0
  9298.         RELLIB    UnbusyWindow,_KCXBase
  9299.         move.l    SetHandle(a4),a0
  9300.         RELLIB    UnbusyWindow,_KCXBase
  9301.         move.l    MiscHandle(a4),a0
  9302.         RELLIB    UnbusyWindow,_KCXBase
  9303.         move.l    AlarmHandle(a4),a0
  9304.         RELLIB    UnbusyWindow,_KCXBase
  9305.         move.l    CycleHandle(a4),a0
  9306.         RELLIB    UnbusyWindow,_KCXBase
  9307.         move.l    ClockDefHandle(a4),a0
  9308.         RELLIB    UnbusyWindow,_KCXBase
  9309.         move.l    MouseHandle(a4),a0
  9310.         RELLIB    UnbusyWindow,_KCXBase
  9311.         move.l    HotKeyHandle(a4),a0
  9312.         RELLIB    UnbusyWindow,_KCXBase
  9313.         move.l    FKeyHandle(a4),a0
  9314.         RELLIB    UnbusyWindow,_KCXBase
  9315.         move.l    PrefsHandle(a4),a0
  9316.         RELLIB    UnbusyWindow,_KCXBase
  9317.         move.l    LockHandle(a4),a0
  9318.         RELLIB    UnbusyWindow,_KCXBase
  9319.         rts
  9320.  
  9321.  
  9322.  
  9323.  
  9324.  
  9325. **********************************************************************
  9326. *                   Displays a hotkey by it`s name                   *
  9327. * D0 = Code                                                          *
  9328. * D1 = Qualifier                                                     *
  9329. * D2 = Number of gadget                                              *
  9330. * A0 = Pointer to gadgetlist                                         *
  9331. * A1 = Pointer to window                                             *
  9332. * A2 = Pointer to buffer for string                                  *
  9333. **********************************************************************
  9334. DisplayHotKey    movem.l    RegsAll,-(sp)
  9335.  
  9336.         move.l    a1,d5
  9337.         beq    .End
  9338.  
  9339.         link    a5,#-(ie_SIZEOF+138)        ; Get a buffer
  9340.  
  9341.         movem.l    a0-a2/d0-d2,-(sp)        ; Filter out qualifiers
  9342.         move.l    a2,a1
  9343.         clr.b    (a1)
  9344.         lea    QualifierTab,a2
  9345.         moveq    #NUMQUALIFIER-1,d7
  9346.         move.w    d1,d4
  9347. .LoopQual    tst.w    d4                ; No qualifier ?
  9348.         beq.s    .QualDone            ; Go on
  9349.         move.w    d4,d5
  9350.         move.l    (a2),d6                ; get qualifier from table
  9351.         and.w    d6,d5                ; Set in user qual ?
  9352.         beq.s    .NotThisOne            ; Nope -> go on
  9353.         move.l    4(a2),a0            ; Append it`s name to string
  9354.         bsr    StrCpy
  9355.         move.b    #' ',-1(a1)
  9356.         not.w    d6                ; Clear flag
  9357.         and.w    d6,d4
  9358. .NotThisOne    addq.l    #8,a2                ; loop
  9359.         dbf    d7,.LoopQual
  9360. .QualDone    move.l    a1,a3
  9361.         movem.l    (sp)+,a0-a2/d0-d2
  9362.  
  9363.         tst.w    d0
  9364.         ble.s    .NoCodeQuote
  9365.         move.b    #"'",(a3)+
  9366. .NoCodeQuote    clr.b    (a3)
  9367.         move.l    a2,-(sp)
  9368.         tst.w    d0
  9369.         ble.s    .GotCode
  9370.         lea    CodeTab,a2            ; Test for code within table
  9371.         move.w    #NUMCODES-1,d7
  9372. .Loop        move.l    (a2),d5
  9373.         cmp.w    d5,d0
  9374.         beq.s    .ThisCode
  9375.         addq.l    #8,a2
  9376.         dbf    d7,.Loop
  9377.         bra.s    .NoSpecCode
  9378. .ThisCode    move.l    4(a2),a3
  9379.         bra.s    .GotCode
  9380.  
  9381. .NoSpecCode    move.l    (sp)+,a2
  9382.         movem.l    a0-a2/d0-d2,-(sp)
  9383.         lea    -ie_SIZEOF(a5),a1        ; Convert RAWKEY
  9384.         clr.l    ie_NextEvent(a1)
  9385.         move.b    #IECLASS_RAWKEY,ie_Class(a1)
  9386.         clr.b    ie_SubClass(a1)
  9387.         move.w    d0,ie_Code(a1)
  9388.         clr.w    ie_Qualifier(a1)
  9389.         clr.l    ie_EventAddress(a1)
  9390.  
  9391.         move.l    a1,a0
  9392.         lea    -(ie_SIZEOF+10)(a5),a1
  9393.         moveq    #9,d1
  9394.         sub.l    a2,a2
  9395.         RELLIB    MapRawKey,_KeyMapBase
  9396.         movem.l    (sp)+,a0-a2/d0-d2
  9397.         clr.b    -(ie_SIZEOF+9)(a5)
  9398.         lea    -(ie_SIZEOF+10)(a5),a3
  9399.         cmp.b    #'a',(a3)
  9400.         blt.s    .GoOn2
  9401.         and.b    #~$20,(a3)            ; Uppercase the key
  9402.         bra.s    .GoOn2
  9403. .GotCode    move.l    (sp)+,a2
  9404. .GoOn2        movem.l    a0-a2/d0-d2,-(sp)
  9405.         move.l    a3,a0
  9406.         move.l    a2,a1
  9407.         move.w    d0,-(sp)
  9408.         bsr    StrCat
  9409.         move.w    (sp)+,d0
  9410.         tst.w    d0
  9411.         ble.s    .NoCodeQuote2
  9412.         move.b    #"'",-1(a1)
  9413. .NoCodeQuote2    clr.b    (a1)
  9414.         movem.l    (sp)+,a0-a2/d0-d2
  9415.  
  9416.         move.l    d2,d0
  9417.         RELLIB    SetTextGad,_KCXBase
  9418.  
  9419.         unlk    a5
  9420. .End        movem.l    (sp)+,RegsAll
  9421.         rts
  9422.  
  9423.  
  9424.  
  9425.  
  9426. **********************************************************************
  9427. *               Get a qualifier and display in window                *
  9428. **********************************************************************
  9429. GetQualifier    move.l    a0,-(sp)
  9430.         LOCLEA    DefQualTitle,a0
  9431.         lea    QualTitle(a4),a1
  9432.         move.l    a1,QualWinWG+12
  9433.         bsr    StrCpy
  9434.         move.l    (sp)+,a0
  9435.         lea    QualTitle(a4),a1            ; Copy title
  9436.         bsr    StrCat
  9437.  
  9438.         link    a5,#-(4+4+2+2+2+2+gng_SIZEOF)
  9439.         lea    QualTxt(a4),a0
  9440.         move.l    a0,FontPtr(a5)
  9441.         bsr    LockScreen
  9442.         tst.l    d0
  9443.         beq    .QualWinError
  9444.         moveq    #0,d2
  9445.         moveq    #0,d3
  9446.         RELLIB    ComputeFont,_KCXBase
  9447.         move.l    -4(a5),a0
  9448.         sub.l    a1,a1
  9449.         RELLIB    GetVisualInfoA,_GadToolsBase
  9450.         move.l    d0,QualVisInfo(a4)
  9451.         beq    .QualWinError
  9452.  
  9453.         move.l    -4(a5),a0
  9454.         moveq    #0,d3
  9455.         moveq    #0,d2
  9456.         move.w    QualWinWidth(a4),d2
  9457.         move.w    QualWinHeight(a4),d3
  9458.         RELLIB    ComputeFont,_KCXBase
  9459.         move.l    -4(a5),a0
  9460.         move.l    d2,d0
  9461.         DOLIB    ComputeX
  9462.         move.l    d0,d4
  9463.         move.w    QualWinLeft(a4),d2
  9464.         move.l    -4(a5),a3
  9465.         move.w    sc_LeftEdge(a3),d5
  9466.         neg.w    d5
  9467.         add.w    d5,d2
  9468.         add.w    d2,d0
  9469.         add.w    OffX(a5),d0
  9470.         moveq    #0,d1
  9471.         move.b    sc_WBorRight(a0),d1
  9472.         add.w    d1,d0
  9473.         cmp.w    sc_Width(a0),d0
  9474.         bls.s    .WOk
  9475.         move.w    sc_Width(a0),d0
  9476.         sub.w    d4,d0
  9477.         move.w    d0,d2
  9478. .WOk        move.l    d3,d0
  9479.         DOLIB    ComputeY
  9480.         move.l    d0,d4
  9481.         move.w    QualWinTop(a4),d3
  9482.         move.l    -4(a5),a3
  9483.         move.w    sc_TopEdge(a3),d5
  9484.         neg.w    d5
  9485.         add.w    d5,d3
  9486.         add.w    d3,d0
  9487.         add.w    OffY(a5),d0
  9488.         moveq    #0,d1
  9489.         move.b    sc_WBorBottom(a0),d1
  9490.         add.w    d1,d0
  9491.         cmp.w    sc_Height(a0),d0
  9492.         bls.s    .HOk
  9493.         move.w    sc_Height(a0),d0
  9494.         sub.w    d4,d0
  9495.         move.w    d0,d3
  9496. .HOk        lea.l    QualGadget(a4),a0
  9497.         RELLIB    CreateContext,_GadToolsBase
  9498.         move.l    d0,a3
  9499.         beq    .QualWinError
  9500.  
  9501.         movem.l d2-d3/a4,-(sp)
  9502.         moveq    #0,d3
  9503.         lea.l    QualWinGTags,a4
  9504. .QualWinGL    lea.l    QualWinNGads,a0
  9505.         move.l    d3,d0
  9506.         mulu    #gng_SIZEOF,d0
  9507.         add.l    d0,a0
  9508.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  9509.         moveq    #gng_SIZEOF,d0
  9510.         CALLSYS    CopyMem
  9511.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a0
  9512.         move.l    a4,-(sp)
  9513.         move.l    ZeroBase(pc),a4
  9514.         move.l    gng_GadgetText(a0),-(sp)
  9515.         bsr    GetLocStr
  9516.         move.l    (sp)+,d7
  9517.         move.l    d7,gng_GadgetText(a0)
  9518.         move.l    QualVisInfo(a4),gng_VisualInfo(a0)
  9519.         move.l    FontPtr(a5),gng_TextAttr(a0)
  9520.         move.w    gng_LeftEdge(a0),d0
  9521.         RELLIB    ComputeX,_KCXBase
  9522.         add.w    OffX(a5),d0
  9523.         move.w    d0,gng_LeftEdge(a0)
  9524.         move.w    gng_TopEdge(a0),d0
  9525.         DOLIB    ComputeY
  9526.         add.w    OffY(a5),d0
  9527.         move.w    d0,gng_TopEdge(a0)
  9528.         move.w    gng_Width(a0),d0
  9529.         DOLIB    ComputeX
  9530.         move.w    d0,gng_Width(a0)
  9531.         move.w    gng_Height(a0),d0
  9532.         DOLIB    ComputeY
  9533.         move.l    (sp)+,a4
  9534.         move.w    d0,gng_Height(a0)
  9535.         lea.l    QualWinGTypes,a0
  9536.         moveq    #0,d0
  9537.         move.l    d3,d1
  9538.         lsl.l    #1,d1
  9539.         move.w    0(a0,d1.w),d0
  9540.         move.l    a3,a0
  9541.         lea.l    -(4+4+2+2+2+2+gng_SIZEOF)(a5),a1
  9542.         move.l    a4,a2
  9543.         move.l    a4,-(sp)
  9544.         move.l    ZeroBase(pc),a4
  9545.         RELLIB    CreateGadgetA,_GadToolsBase
  9546.         move.l    (sp)+,a4
  9547.         tst.l    d0
  9548.         beq    .QualWinError
  9549.         move.l    d0,a3
  9550.         move.l    d3,d0
  9551.         lsl.l    #2,d0
  9552.         move.l    a4,-(sp)
  9553.         move.l    ZeroBase(pc),a4
  9554.         lea.l    QualGads(a4),a0
  9555.         move.l    (sp)+,a4
  9556.         move.l    a3,0(a0,d0.w)
  9557. .QualWinTL    tst.l    (a4)
  9558.         beq.s    .QualWinDN
  9559.         addq.w    #8,a4
  9560.         bra.s    .QualWinTL
  9561. .QualWinDN    addq.w    #4,a4
  9562.         addq.w    #1,d3
  9563.         cmp.w    #QualWin_CNT,d3
  9564.         bmi    .QualWinGL
  9565.         movem.l (sp)+,d2-d3/a4
  9566.         move.l    QualGadget(a4),QualWinWG+4
  9567.  
  9568.         LOCLEA    WindowScrTitle,QualWinWG+20
  9569.         move.l    -4(a5),QualWinSC+4        ; Open window
  9570.         ext.l    d2
  9571.         ext.l    d3
  9572.         move.l    d2,QualWinL+4
  9573.         move.l    d3,QualWinT+4
  9574.         move.l    -4(a5),a0
  9575.         move.w    QualWinWidth(a4),d0
  9576.         RELLIB    ComputeX,_KCXBase
  9577.         add.w    OffX(a5),d0
  9578.         moveq    #0,d1
  9579.         move.b    sc_WBorRight(a0),d1
  9580.         add.w    d1,d0
  9581.         move.l    d0,QualWinW+4
  9582.         move.w    QualWinHeight(a4),d0
  9583.         DOLIB    ComputeY
  9584.         add.w    OffY(a5),d0
  9585.         moveq    #0,d1
  9586.         move.b    sc_WBorBottom(a0),d1
  9587.         add.w    d1,d0
  9588.         move.l    d0,QualWinH+4
  9589.         suba.l    a0,a0
  9590.         lea.l    QualWinWindowTags,a1
  9591.         RELLIB    OpenWindowTagList,_IntuitionBase
  9592.         move.l    d0,QualHandle(a4)
  9593.         beq.s    .QualWinError
  9594.         move.l    d0,a0
  9595.         move.l    WindowPort(a4),wd_UserPort(a0)
  9596.         move.l    #QUALWINIDCMP,d0
  9597.         DOLIB    ModifyIDCMP
  9598.  
  9599.         move.l    QualHandle(a4),a0
  9600.         suba.l    a1,a1
  9601.         RELLIB    GT_RefreshWindow,_GadToolsBase
  9602.  
  9603.         move.w    NewCode(a4),d0            ; Display old HotKey
  9604.         move.w    NewQual(a4),d1
  9605.         move.l    #GD_QualTxt,d2
  9606.         lea    QualGads(a4),a0
  9607.         move.l    QualHandle(a4),a1
  9608.         lea    QualQualStr(a4),a2
  9609.         bsr    DisplayHotKey
  9610.  
  9611.         bsr    BusyAllWins
  9612.  
  9613.         bsr    UnlockScreen
  9614.         unlk    a5
  9615.         bsr    DisableBroker
  9616.         move.b    Disabled(a4),d0
  9617.         move.b    d0,OldDisabled(a4)
  9618.         move.b    #1,Disabled(a4)
  9619.         bra.s    WorkQualWin
  9620.  
  9621. .QualWinError    bsr    UnlockScreen
  9622.         unlk    a5
  9623.         bra    CloseQualWin
  9624.  
  9625. WorkQualWin    move.l    WindowPort(a4),a0
  9626.         CALLSYS    WaitPort
  9627. LoopQualMsg    move.l    QualHandle(a4),a0
  9628.         move.l    wd_UserPort(a0),a0
  9629.         RELLIB    GT_GetIMsg,_GadToolsBase
  9630.         tst.l    d0
  9631.         beq    WorkQualWin
  9632.  
  9633.         move.l    d0,a1
  9634.         move.l    im_Class(a1),d6            ; Get class
  9635.         moveq    #0,d5
  9636.         move.w    im_Code(a1),d5            ; Get code
  9637.         tst.b    KeepCode(a4)            ; Keep code fixed ?
  9638.         beq.s    .NewCode
  9639.         and.w    #IECODE_UP_PREFIX,d5
  9640.         tst.w    NewCode(a4)
  9641.         ble.s    .NewCode
  9642.         or.w    NewCode(a4),d5
  9643. .NewCode    move.l    d6,d0
  9644.         move.w    im_Qualifier(a1),d4        ; Get qualifier
  9645.         and.w    #~(IEQUALIFIER_REPEAT|IEQUALIFIER_NUMERICPAD|IEQUALIFIER_INTERRUPT|IEQUALIFIER_RELATIVEMOUSE),d4
  9646.         and.l    #(IDCMP_GADGETUP|IDCMP_GADGETDOWN),d0
  9647.         beq.s    .NoGad
  9648.         move.l    im_IAddress(a1),a2        ; Get gadget id
  9649.         move.w    gg_GadgetID(a2),d7
  9650.  
  9651. .NoGad        DOLIB    GT_ReplyIMsg            ; Reply gadtools msg
  9652.  
  9653.         cmp.l    #IDCMP_CLOSEWINDOW,d6
  9654.         beq    CloseQualWin
  9655.  
  9656.         cmp.l    #IDCMP_CHANGEWINDOW,d6
  9657.         bne.s    NoQualMove
  9658.         move.l    QualHandle(a4),a0
  9659.         lea    QualWinLeft(a4),a1
  9660.         bsr    StoreWinPos
  9661.         bra    LoopQualMsg
  9662.  
  9663. NoQualMove    cmp.l    #IDCMP_GADGETUP,d6        ; Gadget released ?
  9664.         bne.s    NoQualGadUp
  9665.  
  9666.         cmp.w    #1,d7                ; On OK just exit
  9667.         beq.s    CloseQualWin
  9668.  
  9669. NoQualOk    cmp.w    #2,d7                ; On Cancel -> clear code
  9670.         bne    LoopQualMsg            ; To indicate cancel
  9671.         clr.w    NewCode(a4)
  9672.         bra.s    CloseQualWin
  9673.  
  9674. NoQualGadUp    cmp.l    #IDCMP_RAWKEY,d6        ; Key pressed ?
  9675.         bne.s    NoQualRaw
  9676.         move.w    d5,d0                ; Key released ?
  9677.         and.w    #IECODE_UP_PREFIX,d0
  9678.         bne    LoopQualMsg            ; Yep -> return
  9679.         tst.b    KeepCode(a4)            ; Only change qualifier ?
  9680.         bne.s    DisplayQual            ; Yep -> go on
  9681.         cmp.w    #$60,d5                ; Qualifier used as code ?
  9682.         bge    LoopQualMsg            ; Yep -> return
  9683.         bra.s    DisplayQual            ; Display qualifier
  9684.  
  9685. NoQualRaw    cmp.l    #IDCMP_MOUSEBUTTONS,d6
  9686.         bne    LoopQualMsg
  9687.  
  9688.         move.w    d5,d0                ; Button released ?
  9689.         and.w    #IECODE_UP_PREFIX,d0
  9690.         bne    LoopQualMsg            ; Yep -> return
  9691. DisplayQual    move.w    d5,d0                ; Filter out double
  9692.         move.w    d4,d1                ; existence of mouse buttons
  9693.         bsr.s    FilterDouble
  9694.         tst.b    KeepCode(a4)
  9695.         bne.s    .NoNewCode
  9696.         move.w    d0,NewCode(a4)            ; Store keys
  9697. .NoNewCode    move.w    d1,NewQual(a4)
  9698.         move.l    #GD_QualTxt,d2
  9699.         lea    QualGads(a4),a0
  9700.         move.l    QualHandle(a4),a1
  9701.         lea    QualQualStr(a4),a2
  9702.         bsr    DisplayHotKey            ; Display HotKey
  9703.         bra    LoopQualMsg
  9704.  
  9705. CloseQualWin    move.b    OldDisabled(a4),d0
  9706.         move.b    d0,Disabled(a4)
  9707.         bsr    EnableBroker
  9708.  
  9709.         bsr    UnbusyAllWins
  9710.  
  9711.         lea    QualHandle(a4),a3
  9712.         bra    CloseAWindow
  9713.  
  9714.  
  9715.  
  9716.  
  9717. **********************************************************************
  9718. *               Filter double Code/Qualifier occurance               *
  9719. * D0 = Code                                                          *
  9720. * D1 = Qualifier                                                     *
  9721. **********************************************************************
  9722. FilterDouble    cmp.w    #IECODE_LBUTTON,d0        ; If one of the buttons
  9723.         bne.s    .NotLeft            ; is defined within code and qualifier
  9724.         and.w    #~IEQUALIFIER_LEFTBUTTON,d1    ; clear the button out of the qualifier
  9725. .NotLeft    cmp.w    #IECODE_MBUTTON,d0
  9726.         bne.s    .NotMid
  9727.         and.w    #~IEQUALIFIER_MIDBUTTON,d1
  9728. .NotMid        cmp.w    #IECODE_RBUTTON,d0
  9729.         bne.s    .NotRight
  9730.         and.w    #~IEQUALIFIER_RBUTTON,d1
  9731. .NotRight    rts
  9732.  
  9733.  
  9734.  
  9735.  
  9736. **********************************************************************
  9737. *              Stub for calling the library`s EditHook               *
  9738. **********************************************************************
  9739. MyStrEditFunc    movem.l    RegsAll,-(sp)
  9740.         move.l    h_Data(a0),a4
  9741.         RELLIB    StrEditFunc,_KCXBase
  9742.         movem.l    (sp)+,RegsAll
  9743.         rts
  9744.  
  9745.  
  9746.  
  9747.  
  9748. **********************************************************************
  9749. *                     Get a string froma locale                      *
  9750. **********************************************************************
  9751. GetLocStr    movem.l    d0-d1/a0-a1/a6,-(sp)
  9752.         move.l    MyCatalog,d1
  9753.         beq.s    .End
  9754.         move.l    24(sp),d0
  9755.         beq.s    .End
  9756.         move.l    d0,a1
  9757.         moveq    #0,d0
  9758.         move.l    a1,d1
  9759.         lea    LOCALE_END(pc),a0
  9760.         cmp.l    a0,d1
  9761.         bge.s    .End
  9762.         lea    LOCALE_START(pc),a0
  9763.         cmp.l    a0,d1
  9764.         blt.s    .End
  9765.         sub.l    a0,d1
  9766.         beq.s    .GetIt
  9767. .Loop        tst.b    (a0)+
  9768.         bne.s    .Ok
  9769.         addq.l    #1,d0
  9770. .Ok        subq.l    #1,d1
  9771.         bne.s    .Loop
  9772.  
  9773. .GetIt        move.l    MyCatalog,a0
  9774.         RELLIB    GetCatalogStr,_LocaleBase
  9775.         move.l    d0,24(sp)
  9776. .End        movem.l    (sp)+,d0-d1/a0-a1/a6
  9777.         rts
  9778.  
  9779.  
  9780.  
  9781.  
  9782.  
  9783. **********************************************************************
  9784. *          Convert a char to uppercase using Locale or Util          *
  9785. **********************************************************************
  9786. GetUpperCase    movem.l    d1-d7/a0-a6,-(sp)
  9787.         move.l    ZeroBase(pc),a4
  9788.         cmp.l    #48,d0
  9789.         blt.s    .NormChar
  9790.         cmp.l    #57,d0
  9791.         bgt.s    .NormChar
  9792.         lea    ConvTable(pc),a0
  9793.         sub.w    #48,d0
  9794.         moveq    #0,d1
  9795.         move.b    0(a0,d0),d1
  9796.         move.l    d1,d0
  9797. .NormChar    tst.l    MyLocale
  9798.         beq.s    .UseUtil
  9799.         move.l    MyLocale,a0
  9800.         RELLIB    ConvToUpper,_LocaleBase
  9801.         bra.s    .End
  9802. .UseUtil    RELLIB    ToUpper,_UtilityBase
  9803. .End        movem.l    (sp)+,d1-d7/a0-a6
  9804.         rts
  9805. ConvTable    dc.b    "=","!",'"',"§","$","%","&","/","(",")"
  9806.         EVEN
  9807.  
  9808.  
  9809. **********************************************************************
  9810. *                             Variables                              *
  9811. **********************************************************************
  9812. ClearStr    dc.b    $9B,$30,$20,$70
  9813. ClearStrLen    EQU    *-ClearStr
  9814. EndAnyStr    dc.b    $9B,$20,$70,$9b,$4b,$9B,"0;39;49m",0
  9815. EndAnyStrLen    EQU    *-EndAnyStr
  9816.  
  9817.  
  9818. _SysBase    dc.l    0
  9819. _CxBase        dc.l    0
  9820. ZeroBase    dc.l    0
  9821. StrEditHook    ds.b    h_SIZEOF
  9822.         EVEN
  9823.  
  9824.  
  9825.  
  9826.  
  9827. **********************************************************************
  9828. *                         AutoRequester-Texts                        *
  9829. **********************************************************************
  9830. Only20ITxt    dc.b    0,1
  9831.         dc.b    RP_JAM1
  9832.         dc.b    0
  9833.         dc.w    10,10
  9834.         dc.l    0
  9835.         dc.l    Only20Txt
  9836.         dc.l    0
  9837. OkITxt        dc.b    2,1
  9838.         dc.b    RP_JAM1
  9839.         dc.b    0
  9840.         dc.w    6,3
  9841.         dc.l    0
  9842.         dc.l    OkTxt
  9843.         dc.l    0
  9844. OkTxt        dc.b    "OK",0
  9845. Only20Txt    dc.b    "KCommodity still only runs under OS 2.x !",10,0
  9846. Only20TxtEnd
  9847.         EVEN
  9848.  
  9849.  
  9850.  
  9851. **********************************************************************
  9852. *                       Easy-Requeststructure                        *
  9853. **********************************************************************
  9854. MyEasyRequest    dc.l    es_SIZEOF
  9855.         dc.l    0
  9856.         dc.l    0
  9857.         dc.l    0
  9858.         dc.l    0
  9859. EasyGadget    dc.b    "OK",0
  9860.         EVEN
  9861.  
  9862.  
  9863. **********************************************************************
  9864. *                 Some defines fo easy customization                 *
  9865. **********************************************************************
  9866. MAINWINIDCMP    EQU    BUTTONIDCMP!IDCMP_GADGETDOWN!IDCMP_MENUPICK!IDCMP_CLOSEWINDOW!IDCMP_RAWKEY!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW
  9867. SETWINIDCMP    EQU    CHECKBOXIDCMP!IDCMP_CLOSEWINDOW!IDCMP_RAWKEY!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW!IDCMP_REFRESHWINDOW
  9868. MISCWINIDCMP    EQU    CHECKBOXIDCMP!SLIDERIDCMP!BUTTONIDCMP!TEXTIDCMP!STRINGIDCMP!IDCMP_CLOSEWINDOW!IDCMP_RAWKEY!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW
  9869. ALARMWINIDCMP    EQU    CHECKBOXIDCMP!SLIDERIDCMP!CYCLEIDCMP!BUTTONIDCMP!TEXTIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW
  9870. QUALWINIDCMP    EQU    TEXTIDCMP!BUTTONIDCMP!IDCMP_CLOSEWINDOW!IDCMP_REFRESHWINDOW!IDCMP_RAWKEY!IDCMP_MOUSEBUTTONS!IDCMP_CHANGEWINDOW
  9871. CYCLEWINIDCMP    EQU    CHECKBOXIDCMP!SLIDERIDCMP!BUTTONIDCMP!TEXTIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW
  9872. BLANKWINIDCMP    EQU    CHECKBOXIDCMP!SLIDERIDCMP!CYCLEIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW
  9873. CLOCKDEFWINIDCMP    EQU    SLIDERIDCMP!CHECKBOXIDCMP!CYCLEIDCMP!PALETTEIDCMP!IDCMP_CLOSEWINDOW!IDCMP_RAWKEY!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW!IDCMP_REFRESHWINDOW
  9874. MOUSEWINIDCMP    EQU    CHECKBOXIDCMP!SLIDERIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW
  9875. HOTKEYWINIDCMP    EQU    LISTVIEWIDCMP!STRINGIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW
  9876. FKEYWINIDCMP    EQU    STRINGIDCMP!CYCLEIDCMP!CHECKBOXIDCMP!BUTTONIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW!IDCMP_ACTIVEWINDOW
  9877. FORMWINIDCMP    EQU    CYCLEIDCMP!STRINGIDCMP!CHECKBOXIDCMP!BUTTONIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW!IDCMP_ACTIVEWINDOW
  9878. PREFSWINIDCMP    EQU    INTEGERIDCMP!SLIDERIDCMP!CHECKBOXIDCMP!BUTTONIDCMP!STRINGIDCMP!TEXTIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW
  9879. LOCKWINIDCMP    EQU    BUTTONIDCMP!STRINGIDCMP!LISTVIEWIDCMP!BUTTONIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW
  9880. TASKWINIDCMP    EQU    LISTVIEWIDCMP!IDCMP_CLOSEWINDOW!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW!IDCMP_REFRESHWINDOW
  9881. TAGSCRWINIDCMP    EQU    TEXTIDCMP!CHECKBOXIDCMP!INTEGERIDCMP!BUTTONIDCMP!STRINGIDCMP!LISTVIEWIDCMP!IDCMP_CLOSEWINDOW!IDCMP_RAWKEY!IDCMP_VANILLAKEY!IDCMP_CHANGEWINDOW!IDCMP_REFRESHWINDOW
  9882.  
  9883.  
  9884. **********************************************************************
  9885. *                  Definitions for the main window                   *
  9886. **********************************************************************
  9887. MainWinWindowTags:
  9888. MainWinL:
  9889.     DC.L    WA_Left,0
  9890. MainWinT:
  9891.     DC.L    WA_Top,0
  9892. MainWinW:
  9893.     DC.L    WA_Width,0
  9894. MainWinH:
  9895.     DC.L    WA_Height,0
  9896.     DC.L    WA_IDCMP,0
  9897.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  9898. MainWinWG:
  9899.     DC.L    WA_Gadgets,0
  9900. Zero1    DC.L    WA_Title,ControlTitle
  9901.     DC.L    WA_ScreenTitle,WindowScrTitle
  9902. MainWinSC:
  9903.     DC.L    WA_PubScreen,0
  9904.     DC.L    WA_NewLookMenus,1
  9905.     DC.L    TAG_DONE
  9906.  
  9907.  
  9908. MainWinMenuDef:
  9909.     DC.B    NM_TITLE,0
  9910.     DC.L    MainWinDefMName0
  9911.     DC.L    0
  9912.     DC.W    0
  9913.     DC.L    0,0
  9914.  
  9915.     DC.B    NM_ITEM,0
  9916.     DC.L    MainWinDefMName1
  9917.     DC.L    MainWinDefMComm1
  9918.     DC.W    0
  9919.     DC.L    0,DoublePrefs
  9920.  
  9921.     DC.B    NM_ITEM,0
  9922.     DC.L    NM_BARLABEL,0
  9923.     DC.W    0
  9924.     DC.L    0,0
  9925.  
  9926.     DC.B    NM_ITEM,0
  9927.     DC.L    MainWinDefMName3
  9928.     DC.L    MainWinDefMComm3
  9929.     DC.W    0
  9930.     DC.L    0,DisplayAbout
  9931.  
  9932.     DC.B    NM_END,0
  9933.     DC.L    0,0
  9934.     DC.W    0
  9935.     DC.L    0,0
  9936.  
  9937. MainMenuTags
  9938.     DC.L    GTMN_NewLookMenus,1
  9939.     DC.L    TAG_DONE
  9940.  
  9941.  
  9942. MainWinGTypes:
  9943.     DC.W    BUTTON_KIND
  9944.     DC.W    BUTTON_KIND
  9945.     DC.W    BUTTON_KIND
  9946.     DC.W    BUTTON_KIND
  9947.     DC.W    BUTTON_KIND
  9948.     DC.W    BUTTON_KIND
  9949.     DC.W    BUTTON_KIND
  9950.     DC.W    BUTTON_KIND
  9951.     DC.W    BUTTON_KIND
  9952.     DC.W    BUTTON_KIND
  9953.     DC.W    BUTTON_KIND
  9954.     DC.W    BUTTON_KIND
  9955.     DC.W    BUTTON_KIND
  9956.     DC.W    BUTTON_KIND
  9957.     DC.W    BUTTON_KIND
  9958.     DC.W    BUTTON_KIND
  9959.     DC.W    BUTTON_KIND
  9960.     DC.W    BUTTON_KIND
  9961.     DC.W    BUTTON_KIND
  9962.     DC.W    BUTTON_KIND
  9963.     DC.W    BUTTON_KIND
  9964.  
  9965. MainWinNGads:
  9966.     DC.W    9,6,176,12
  9967.     DC.L    SettingsText,0
  9968.     DC.W    GD_Settings
  9969.     DC.L    PLACETEXT_IN,0,0
  9970.     DC.W    189,6,176,12
  9971.     DC.L    MiscText,0
  9972.     DC.W    GD_Misc
  9973.     DC.L    PLACETEXT_IN,0,0
  9974.     DC.W    9,22,176,12
  9975.     DC.L    BlankingText,0
  9976.     DC.W    GD_Blanking
  9977.     DC.L    PLACETEXT_IN,0,0
  9978.     DC.W    189,22,176,12
  9979.     DC.L    CyclingText,0
  9980.     DC.W    GD_Cycling
  9981.     DC.L    PLACETEXT_IN,0,0
  9982.     DC.W    9,38,176,12
  9983.     DC.L    MouseText,0
  9984.     DC.W    GD_Mouse
  9985.     DC.L    PLACETEXT_IN,0,0
  9986.     DC.W    189,38,176,12
  9987.     DC.L    HotKeyText,0
  9988.     DC.W    GD_HotKey
  9989.     DC.L    PLACETEXT_IN,0,0
  9990.     DC.W    9,54,176,12
  9991.     DC.L    FKeyText,0
  9992.     DC.W    GD_FKey
  9993.     DC.L    PLACETEXT_IN,0,0
  9994.     DC.W    369,54,176,12
  9995.     DC.L    FormatText,0
  9996.     DC.W    GD_Format
  9997.     DC.L    PLACETEXT_IN,0,0
  9998.     DC.W    369,70,176,12
  9999.     DC.L    BillWinText,0
  10000.     DC.W    GD_BillWin
  10001.     DC.L    PLACETEXT_IN,0,0
  10002.     DC.W    9,70,176,12
  10003.     DC.L    BillPrefsText,0
  10004.     DC.W    GD_BillPrefs
  10005.     DC.L    PLACETEXT_IN,0,0
  10006.     DC.W    9,93,176,12
  10007.     DC.L    LoadPrefsText,0
  10008.     DC.W    GD_LoadPrefs
  10009.     DC.L    PLACETEXT_IN,0,0
  10010.     DC.W    189,93,176,12
  10011.     DC.L    SavePrefsText,0
  10012.     DC.W    GD_SavePrefs
  10013.     DC.L    PLACETEXT_IN,0,0
  10014.     DC.W    369,93,176,12
  10015.     DC.L    RemoveGadText,0
  10016.     DC.W    GD_RemoveGad
  10017.     DC.L    PLACETEXT_IN,0,0
  10018.     DC.W    9,109,176,12
  10019.     DC.L    EnableText,0
  10020.     DC.W    GD_Enable
  10021.     DC.L    PLACETEXT_IN,0,0
  10022.     DC.W    189,109,176,12
  10023.     DC.L    DisableText,0
  10024.     DC.W    GD_Disable
  10025.     DC.L    PLACETEXT_IN,0,0
  10026.     DC.W    369,109,176,12
  10027.     DC.L    QuitText,0
  10028.     DC.W    GD_Quit
  10029.     DC.L    PLACETEXT_IN,0,0
  10030.     DC.W    189,70,176,12
  10031.     DC.L    AlarmText,0
  10032.     DC.W    GD_Alarm
  10033.     DC.L    PLACETEXT_IN,0,0
  10034.     DC.W    369,6,176,12
  10035.     DC.L    ClockDefText,0
  10036.     DC.W    GD_ClockDef
  10037.     DC.L    PLACETEXT_IN,0,0
  10038.     DC.W    369,38,176,12
  10039.     DC.L    HardCopyText,0
  10040.     DC.W    GD_HardCopy
  10041.     DC.L    PLACETEXT_IN,0,0
  10042.     DC.W    189,54,176,12
  10043.     DC.L    LockWinsText,0
  10044.     DC.W    GD_LockWins
  10045.     DC.L    PLACETEXT_IN,0,0
  10046.     DC.W    369,22,176,12
  10047.     DC.L    TagScreensText,0
  10048.     DC.W    GD_TagScreens
  10049.     DC.L    PLACETEXT_IN,0,0
  10050.  
  10051. MainWinGTags:
  10052.     DC.L    GT_Underscore,'_'
  10053.     DC.L    TAG_DONE
  10054.     DC.L    GT_Underscore,'_'
  10055.     DC.L    TAG_DONE
  10056.     DC.L    GT_Underscore,'_'
  10057.     DC.L    TAG_DONE
  10058.     DC.L    GT_Underscore,'_'
  10059.     DC.L    TAG_DONE
  10060.     DC.L    GT_Underscore,'_'
  10061.     DC.L    TAG_DONE
  10062.     DC.L    GT_Underscore,'_'
  10063.     DC.L    TAG_DONE
  10064.     DC.L    GT_Underscore,'_'
  10065.     DC.L    TAG_DONE
  10066.     DC.L    GT_Underscore,'_'
  10067. BackProcThere1
  10068.     DC.L    GA_Disabled,1
  10069.     DC.L    TAG_DONE
  10070.     DC.L    GT_Underscore,'_'
  10071. BackProcThere2
  10072.     DC.L    GA_Disabled,1
  10073.     DC.L    TAG_DONE
  10074.     DC.L    GT_Underscore,'_'
  10075.     DC.L    TAG_DONE
  10076.     DC.L    GT_Underscore,'_'
  10077.     DC.L    TAG_DONE
  10078.     DC.L    GT_Underscore,'_'
  10079.     DC.L    TAG_DONE
  10080.     DC.L    GT_Underscore,'_'
  10081. BackProcThere3
  10082.     DC.L    GA_Disabled,1
  10083.     DC.L    TAG_DONE
  10084.     DC.L    GT_Underscore,'_'
  10085. BackProcThere5
  10086.     DC.L    GA_Disabled,1
  10087.     DC.L    TAG_DONE
  10088.     DC.L    GT_Underscore,'_'
  10089. BackProcThere6
  10090.     DC.L    GA_Disabled,1
  10091.     DC.L    TAG_DONE
  10092.     DC.L    GT_Underscore,'_'
  10093.     DC.L    TAG_DONE
  10094.     DC.L    GT_Underscore,'_'
  10095.     DC.L    TAG_DONE
  10096.     DC.L    GT_Underscore,'_'
  10097.     DC.L    TAG_DONE
  10098.     DC.L    GT_Underscore,'_'
  10099. BackProcThere4
  10100.     DC.L    GA_Disabled,1
  10101.     DC.L    TAG_DONE
  10102.     DC.L    GT_Underscore,'_'
  10103.     DC.L    TAG_DONE
  10104.     DC.L    GT_Underscore,'_'
  10105.     DC.L    TAG_DONE
  10106.  
  10107.  
  10108.  
  10109.  
  10110.  
  10111. GD_Settings                            EQU    0
  10112. GD_Misc                                EQU    1
  10113. GD_Blanking                            EQU    2
  10114. GD_Cycling                             EQU    3
  10115. GD_Mouse                               EQU    4
  10116. GD_HotKey                              EQU    5
  10117. GD_FKey                                EQU    6
  10118. GD_Format                              EQU    7
  10119. GD_BillWin                             EQU    8
  10120. GD_BillPrefs                           EQU    9
  10121. GD_LoadPrefs                           EQU    10
  10122. GD_SavePrefs                           EQU    11
  10123. GD_RemoveGad                           EQU    12
  10124. GD_Enable                              EQU    13
  10125. GD_Disable                             EQU    14
  10126. GD_Quit                                EQU    15
  10127. GD_Alarm                               EQU    16
  10128. GD_ClockDef                            EQU    17
  10129. GD_HardCopy                            EQU    18
  10130. GD_LockWins                            EQU    19
  10131. GD_TagScreens                          EQU    20
  10132.  
  10133.  
  10134.  
  10135. **********************************************************************
  10136. *                    Defines for settings window                     *
  10137. **********************************************************************
  10138. SetWinWindowTags:
  10139. SetWinL:
  10140.     DC.L    WA_Left,0
  10141. SetWinT:
  10142.     DC.L    WA_Top,0
  10143. SetWinW:
  10144.     DC.L    WA_Width,0
  10145. SetWinH:
  10146.     DC.L    WA_Height,0
  10147.     DC.L    WA_IDCMP,0
  10148.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  10149. SetWinWG:
  10150.     DC.L    WA_Gadgets,0
  10151.     DC.L    WA_Title,SetTitle
  10152.     DC.L    WA_ScreenTitle,WindowScrTitle
  10153. SetWinSC:
  10154.     DC.L    WA_PubScreen,0
  10155.     DC.L    TAG_DONE
  10156.  
  10157.  
  10158. SetWinGTypes:
  10159.     DC.W    CHECKBOX_KIND
  10160.     DC.W    CHECKBOX_KIND
  10161.     DC.W    CHECKBOX_KIND
  10162.     DC.W    CHECKBOX_KIND
  10163.     DC.W    CHECKBOX_KIND
  10164.     DC.W    CHECKBOX_KIND
  10165.     DC.W    CHECKBOX_KIND
  10166.     DC.W    CHECKBOX_KIND
  10167.     DC.W    CHECKBOX_KIND
  10168.     DC.W    CHECKBOX_KIND
  10169.  
  10170.  
  10171. SetWinNGads:
  10172.     DC.W    196,2,26,11
  10173.     DC.L    WriteEnvText,0
  10174.     DC.W    GD_WriteEnv
  10175.     DC.L    PLACETEXT_RIGHT,0,0
  10176.     DC.W    196,17,26,11
  10177.     DC.L    WBFrontText,0
  10178.     DC.W    GD_WBFront
  10179.     DC.L    PLACETEXT_RIGHT,0,0
  10180.     DC.W    392,2,26,11
  10181.     DC.L    MapUmlautsText,0
  10182.     DC.W    GD_MapUmlauts
  10183.     DC.L    PLACETEXT_RIGHT,0,0
  10184.     DC.W    7,2,26,11
  10185.     DC.L    MMBShiftText,0
  10186.     DC.W    GD_MMBShift
  10187.     DC.L    PLACETEXT_RIGHT,0,0
  10188.     DC.W    7,17,26,11
  10189.     DC.L    NoClickText,0
  10190.     DC.W    GD_NoClick
  10191.     DC.L    PLACETEXT_RIGHT,0,0
  10192.     DC.W    7,32,26,11
  10193.     DC.L    NoDisplayBeepText,0
  10194.     DC.W    GD_NoDisplayBeep
  10195.     DC.L    PLACETEXT_RIGHT,0,0
  10196.     DC.W    392,17,26,11
  10197.     DC.L    MenuWrapText,0
  10198.     DC.W    GD_MenuWrap
  10199.     DC.L    PLACETEXT_RIGHT,0,0
  10200.     DC.W    392,32,26,11
  10201.     DC.L    StringMenuText,0
  10202.     DC.W    GD_StringMenu
  10203.     DC.L    PLACETEXT_RIGHT,0,0
  10204.     DC.W    196,32,26,11
  10205.     DC.L    AvoidFlickerText,0
  10206.     DC.W    GD_AvoidFlicker
  10207.     DC.L    PLACETEXT_RIGHT,0,0
  10208.  
  10209. SetWinGTags:
  10210.     DC.L    GTCB_Scaled,-1
  10211.     DC.L    GT_Underscore,'_'
  10212.     DC.L    TAG_DONE
  10213.     DC.L    GTCB_Scaled,-1
  10214.     DC.L    GT_Underscore,'_'
  10215.     DC.L    TAG_DONE
  10216.     DC.L    GTCB_Scaled,-1
  10217.     DC.L    GT_Underscore,'_'
  10218.     DC.L    TAG_DONE
  10219.     DC.L    GTCB_Scaled,-1
  10220.     DC.L    GT_Underscore,'_'
  10221.     DC.L    TAG_DONE
  10222.     DC.L    GTCB_Scaled,-1
  10223.     DC.L    GT_Underscore,'_'
  10224.     DC.L    TAG_DONE
  10225.     DC.L    GTCB_Scaled,-1
  10226.     DC.L    GT_Underscore,'_'
  10227.     DC.L    TAG_DONE
  10228.     DC.L    GTCB_Scaled,-1
  10229.     DC.L    GT_Underscore,'_'
  10230.     DC.L    TAG_DONE
  10231.     DC.L    GTCB_Scaled,-1
  10232.     DC.L    GT_Underscore,'_'
  10233.     DC.L    TAG_DONE
  10234.     DC.L    GTCB_Scaled,-1
  10235.     DC.L    GT_Underscore,'_'
  10236.     DC.L    TAG_DONE
  10237.     DC.L    GTCB_Scaled,-1
  10238.     DC.L    GT_Underscore,'_'
  10239.     DC.L    TAG_DONE
  10240.  
  10241. GD_WriteEnv                            EQU    0
  10242. GD_WBFront                             EQU    1
  10243. GD_MapUmlauts                          EQU    2
  10244. GD_MMBShift                            EQU    3
  10245. GD_NoClick                             EQU    4
  10246. GD_NoDisplayBeep                       EQU    5
  10247. GD_MenuWrap                            EQU    6
  10248. GD_StringMenu                          EQU    7
  10249. GD_AvoidFlicker                        EQU    8
  10250.  
  10251.  
  10252.  
  10253.  
  10254.  
  10255.  
  10256. **********************************************************************
  10257. *                      Defines for Misc-window                       *
  10258. **********************************************************************
  10259. MiscWinWindowTags:
  10260. MiscWinL:
  10261.     DC.L    WA_Left,0
  10262. MiscWinT:
  10263.     DC.L    WA_Top,0
  10264. MiscWinW:
  10265.     DC.L    WA_Width,0
  10266. MiscWinH:
  10267.     DC.L    WA_Height,0
  10268.     DC.L    WA_IDCMP,0
  10269.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  10270. MiscWinWG:
  10271.     DC.L    WA_Gadgets,0
  10272.     DC.L    WA_Title,MiscTitle
  10273.     DC.L    WA_ScreenTitle,WindowScrTitle
  10274. MiscWinSC:
  10275.     DC.L    WA_PubScreen,0
  10276.     DC.L    TAG_DONE
  10277.  
  10278.  
  10279. MiscWinGTypes:
  10280.     DC.W    CHECKBOX_KIND
  10281.     DC.W    BUTTON_KIND
  10282.     DC.W    TEXT_KIND
  10283.     DC.W    CHECKBOX_KIND
  10284.     DC.W    SLIDER_KIND
  10285.     DC.W    STRING_KIND
  10286.     DC.W    CHECKBOX_KIND
  10287.     DC.W    CHECKBOX_KIND
  10288.     DC.W    SLIDER_KIND
  10289.     DC.W    SLIDER_KIND
  10290.     DC.W    SLIDER_KIND
  10291.     DC.W    CHECKBOX_KIND
  10292.     DC.W    BUTTON_KIND
  10293.     DC.W    TEXT_KIND
  10294.     DC.W    SLIDER_KIND
  10295.     DC.W    CHECKBOX_KIND
  10296.     DC.W    CYCLE_KIND
  10297.  
  10298. MiscWinNGads:
  10299.     DC.W    10,18,26,11
  10300.     DC.L    ESCCloseText,0
  10301.     DC.W    GD_ESCClose
  10302.     DC.L    PLACETEXT_RIGHT,0,0
  10303.     DC.W    231,18,142,12
  10304.     DC.L    ESCQualText,0
  10305.     DC.W    GD_ESCQual
  10306.     DC.L    PLACETEXT_IN,0,0
  10307.     DC.W    377,18,190,12
  10308.     DC.L    0,0
  10309.     DC.W    GD_ESCQualTxt
  10310.     DC.L    0,0,0
  10311.     DC.W    10,3,26,11
  10312.     DC.L    KeyClickText,0
  10313.     DC.W    GD_KeyClick
  10314.     DC.L    PLACETEXT_RIGHT,0,0
  10315.     DC.W    389,3,178,11
  10316.     DC.L    ClickVolText,0
  10317.     DC.W    GD_ClickVol
  10318.     DC.L    PLACETEXT_LEFT,0,0
  10319.     DC.W    210,49,357,13
  10320.     DC.L    UserShellText,0
  10321.     DC.W    GD_UserShell
  10322.     DC.L    PLACETEXT_LEFT,0,0
  10323.     DC.W    10,84,26,11
  10324.     DC.L    ExpWindowsText,0
  10325.     DC.W    GD_ExpWindows
  10326.     DC.L    PLACETEXT_RIGHT,0,0
  10327.     DC.W    218,84,26,11
  10328.     DC.L    MouseCtrText,0
  10329.     DC.W    GD_MouseCtr
  10330.     DC.L    PLACETEXT_RIGHT,0,0
  10331.     DC.W    37,110,102,10
  10332.     DC.L    ExpFramesText,0
  10333.     DC.W    GD_ExpFrames
  10334.     DC.L    PLACETEXT_ABOVE,0,0
  10335.     DC.W    179,110,102,10
  10336.     DC.L    ImpFramesText,0
  10337.     DC.W    GD_ImpFrames
  10338.     DC.L    PLACETEXT_ABOVE,0,0
  10339.     DC.W    321,110,102,10
  10340.     DC.L    SizeFramesText,0
  10341.     DC.W    GD_SizeFrames
  10342.     DC.L    PLACETEXT_ABOVE,0,0
  10343.     DC.W    10,33,26,11
  10344.     DC.L    FullDragText,0
  10345.     DC.W    GD_FullDrag
  10346.     DC.L    PLACETEXT_RIGHT,0,0
  10347.     DC.W    192,33,181,12
  10348.     DC.L    DragQualText,0
  10349.     DC.W    GD_DragQual
  10350.     DC.L    PLACETEXT_IN,0,0
  10351.     DC.W    377,33,190,12
  10352.     DC.L    0,0
  10353.     DC.W    GD_DragQualTxt
  10354.     DC.L    0,0,0
  10355.     DC.W    465,110,102,10
  10356.     DC.L    MoveFramesText,0
  10357.     DC.W    GD_MoveFrames
  10358.     DC.L    PLACETEXT_ABOVE,0,0
  10359.     DC.W    10,66,26,11
  10360.     DC.L    AltModeText,0
  10361.     DC.W    GD_AltMode
  10362.     DC.L    PLACETEXT_RIGHT,0,0
  10363.     DC.W    210,66,131,13
  10364.     DC.L    AltQualText,0
  10365.     DC.W    GD_AltQual
  10366.     DC.L    PLACETEXT_RIGHT,0,0
  10367.  
  10368. MiscWinGTags:
  10369.     DC.L    GTCB_Scaled,-1
  10370.     DC.L    GT_Underscore,'_'
  10371.     DC.L    TAG_DONE
  10372.     DC.L    GT_Underscore,'_'
  10373.     DC.L    TAG_DONE
  10374.     DC.L    GTTX_Border,1
  10375.     DC.L    TAG_DONE
  10376.     DC.L    GTCB_Scaled,-1
  10377.     DC.L    GT_Underscore,'_'
  10378.     DC.L    TAG_DONE
  10379.     DC.L    GTSL_Min,1
  10380.     DC.L    GTSL_Max,64
  10381.     DC.L    GTSL_MaxLevelLen,6
  10382.     DC.L    GTSL_LevelFormat,ScrDimmFormat
  10383.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10384.     DC.L    GA_RelVerify,1
  10385.     DC.L    GT_Underscore,'_'
  10386.     DC.L    TAG_DONE
  10387.     DC.L    STRINGA_ExitHelp,1
  10388. Zero2    DC.L    GTST_String,SystemComm
  10389.     DC.L    GTST_MaxChars,256
  10390.     DC.L    GT_Underscore,'_'
  10391.     DC.L    TAG_DONE
  10392.     DC.L    GTCB_Scaled,-1
  10393.     DC.L    GT_Underscore,'_'
  10394.     DC.L    TAG_DONE
  10395.     DC.L    GTCB_Scaled,-1
  10396.     DC.L    GT_Underscore,'_'
  10397.     DC.L    TAG_DONE
  10398.     DC.L    GTSL_Max,64
  10399.     DC.L    GTSL_Level,25
  10400.     DC.L    GTSL_MaxLevelLen,6
  10401.     DC.L    GTSL_LevelFormat,ScrDimmFormat
  10402.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10403.     DC.L    GA_RelVerify,1
  10404.     DC.L    GT_Underscore,'_'
  10405.     DC.L    TAG_DONE
  10406.     DC.L    GTSL_Max,64
  10407.     DC.L    GTSL_Level,25
  10408.     DC.L    GTSL_MaxLevelLen,6
  10409.     DC.L    GTSL_LevelFormat,ScrDimmFormat
  10410.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10411.     DC.L    GA_RelVerify,1
  10412.     DC.L    GT_Underscore,'_'
  10413.     DC.L    TAG_DONE
  10414.     DC.L    GTSL_Max,64
  10415.     DC.L    GTSL_Level,25
  10416.     DC.L    GTSL_MaxLevelLen,6
  10417.     DC.L    GTSL_LevelFormat,ScrDimmFormat
  10418.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10419.     DC.L    GA_RelVerify,1
  10420.     DC.L    GT_Underscore,'_'
  10421.     DC.L    TAG_DONE
  10422.     DC.L    GTCB_Scaled,-1
  10423.     DC.L    GT_Underscore,'_'
  10424.     DC.L    TAG_DONE
  10425.     DC.L    GT_Underscore,'_'
  10426.     DC.L    TAG_DONE
  10427.     DC.L    GTTX_Border,1
  10428.     DC.L    TAG_DONE
  10429.     DC.L    GTSL_Max,64
  10430.     DC.L    GTSL_Level,25
  10431.     DC.L    GTSL_MaxLevelLen,6
  10432.     DC.L    GTSL_LevelFormat,ScrDimmFormat
  10433.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10434.     DC.L    GA_RelVerify,1
  10435.     DC.L    GT_Underscore,'_'
  10436.     DC.L    TAG_DONE
  10437.     DC.L    GTCB_Scaled,-1
  10438.     DC.L    GT_Underscore,'_'
  10439.     DC.L    TAG_DONE
  10440.     DC.L    GTCY_Labels,AltQualLabels
  10441.     DC.L    GT_Underscore,'_'
  10442.     DC.L    TAG_DONE
  10443.  
  10444.  
  10445. AltQualLabels:
  10446.     DC.L    AltQualLab0
  10447.     DC.L    AltQualLab1
  10448.     DC.L    0
  10449.  
  10450.  
  10451.  
  10452.  
  10453.  
  10454. GD_ESCClose                            EQU    0
  10455. GD_ESCQual                             EQU    1
  10456. GD_ESCQualTxt                          EQU    2
  10457. GD_KeyClick                            EQU    3
  10458. GD_ClickVol                            EQU    4
  10459. GD_UserShell                           EQU    5
  10460. GD_ExpWindows                          EQU    6
  10461. GD_MouseCtr                            EQU    7
  10462. GD_ExpFrames                           EQU    8
  10463. GD_ImpFrames                           EQU    9
  10464. GD_SizeFrames                          EQU    10
  10465. GD_FullDrag                            EQU    11
  10466. GD_DragQual                            EQU    12
  10467. GD_DragQualTxt                         EQU    13
  10468. GD_MoveFrames                          EQU    14
  10469. GD_AltMode                             EQU    15
  10470. GD_AltQual                             EQU    16
  10471.  
  10472.  
  10473.  
  10474.  
  10475.  
  10476. **********************************************************************
  10477. *                  Settings for alarm modes window                   *
  10478. **********************************************************************
  10479. AlarmWinWindowTags:
  10480. AlarmWinL:
  10481.     DC.L    WA_Left,0
  10482. AlarmWinT:
  10483.     DC.L    WA_Top,0
  10484. AlarmWinW:
  10485.     DC.L    WA_Width,0
  10486. AlarmWinH:
  10487.     DC.L    WA_Height,0
  10488.     DC.L    WA_IDCMP,0
  10489.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  10490. AlarmWinWG:
  10491.     DC.L    WA_Gadgets,0
  10492.     DC.L    WA_Title,AlarmTitle
  10493.     DC.L    WA_ScreenTitle,WindowScrTitle
  10494. AlarmWinSC:
  10495.     DC.L    WA_PubScreen,0
  10496.     DC.L    TAG_DONE
  10497.  
  10498.  
  10499.  
  10500. AlarmWinGTypes:
  10501.     DC.W    CHECKBOX_KIND
  10502.     DC.W    CHECKBOX_KIND
  10503.     DC.W    CHECKBOX_KIND
  10504.     DC.W    SLIDER_KIND
  10505.     DC.W    CYCLE_KIND
  10506.     DC.W    BUTTON_KIND
  10507.     DC.W    TEXT_KIND
  10508.     DC.W    BUTTON_KIND
  10509.  
  10510. AlarmWinNGads:
  10511.     DC.W    6,3,26,11
  10512.     DC.L    AlarmOnText,0
  10513.     DC.W    GD_AlarmOn
  10514.     DC.L    PLACETEXT_RIGHT,0,0
  10515.     DC.W    158,3,26,11
  10516.     DC.L    AllHoursText,0
  10517.     DC.W    GD_AllHours
  10518.     DC.L    PLACETEXT_RIGHT,0,0
  10519.     DC.W    318,3,26,11
  10520.     DC.L    ShowAlarmText,0
  10521.     DC.W    GD_ShowAlarm
  10522.     DC.L    PLACETEXT_RIGHT,0,0
  10523.     DC.W    253,18,225,11
  10524.     DC.L    AlarmTimeText,0
  10525.     DC.W    GD_AlarmTime
  10526.     DC.L    PLACETEXT_LEFT,0,0
  10527.     DC.W    141,33,149,13
  10528.     DC.L    AlSoundTypeText,0
  10529.     DC.W    GD_AlSoundType
  10530.     DC.L    PLACETEXT_LEFT,0,0
  10531.     DC.W    298,33,180,13
  10532.     DC.L    AlarmSampleText,0
  10533.     DC.W    GD_AlarmSample
  10534.     DC.L    PLACETEXT_IN,0,0
  10535.     DC.W    141,50,337,12
  10536.     DC.L    SampleNameText,0
  10537.     DC.W    GD_SampleName
  10538.     DC.L    PLACETEXT_LEFT,0,0
  10539.     DC.W    141,64,337,12
  10540.     DC.L    TestSampleText,0
  10541.     DC.W    GD_TestSample
  10542.     DC.L    PLACETEXT_IN,0,0
  10543.  
  10544. AlarmWinGTags:
  10545.     DC.L    GTCB_Scaled,-1
  10546.     DC.L    GT_Underscore,'_'
  10547.     DC.L    TAG_DONE
  10548.     DC.L    GTCB_Scaled,-1
  10549.     DC.L    GT_Underscore,'_'
  10550.     DC.L    TAG_DONE
  10551.     DC.L    GTCB_Scaled,-1
  10552.     DC.L    GT_Underscore,'_'
  10553.     DC.L    TAG_DONE
  10554.     DC.L    GTSL_Max,1439
  10555.     DC.L    GTSL_MaxLevelLen,6
  10556.     DC.L    GTSL_LevelFormat,StringFormat
  10557.     DC.L    GTSL_DispFunc,ShowAlarm
  10558.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10559.     DC.L    GA_RelVerify,1
  10560.     DC.L    GT_Underscore,'_'
  10561.     DC.L    TAG_DONE
  10562.     DC.L    GTCY_Labels,AlSoundTypeLabels
  10563.     DC.L    GT_Underscore,'_'
  10564.     DC.L    TAG_DONE
  10565.     DC.L    GT_Underscore,'_'
  10566.     DC.L    TAG_DONE
  10567.     DC.L    GTTX_Border,1
  10568.     DC.L    TAG_DONE
  10569.     DC.L    GT_Underscore,'_'
  10570.     DC.L    TAG_DONE
  10571.  
  10572.  
  10573.  
  10574. AlSoundTypeLabels:
  10575.     DC.L    AlSoundTypeLab0
  10576.     DC.L    AlSoundTypeLab1
  10577.     DC.L    0
  10578.  
  10579. GD_AlarmOn                             EQU    0
  10580. GD_AllHours                            EQU    1
  10581. GD_ShowAlarm                           EQU    2
  10582. GD_AlarmTime                           EQU    3
  10583. GD_AlSoundType                         EQU    4
  10584. GD_AlarmSample                         EQU    5
  10585. GD_SampleName                          EQU    6
  10586. GD_TestSample                          EQU    7
  10587.  
  10588.  
  10589.  
  10590.  
  10591. **********************************************************************
  10592. *                   Settings for qualifier window                    *
  10593. **********************************************************************
  10594. QualWinWindowTags:
  10595. QualWinL:
  10596.     DC.L    WA_Left,0
  10597. QualWinT:
  10598.     DC.L    WA_Top,0
  10599. QualWinW:
  10600.     DC.L    WA_Width,0
  10601. QualWinH:
  10602.     DC.L    WA_Height,0
  10603.     DC.L    WA_IDCMP,0
  10604.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE!WFLG_RMBTRAP
  10605. QualWinWG:
  10606.     DC.L    WA_Gadgets,0
  10607.     DC.L    WA_Title,QualTitle
  10608.     DC.L    WA_ScreenTitle,WindowScrTitle
  10609. QualWinSC:
  10610.     DC.L    WA_PubScreen,0
  10611.     DC.L    TAG_DONE
  10612.  
  10613.  
  10614. QualWinGTypes:
  10615.     DC.W    TEXT_KIND
  10616.     DC.W    BUTTON_KIND
  10617.     DC.W    BUTTON_KIND
  10618.  
  10619. QualWinNGads:
  10620.     DC.W    5,4,412,13
  10621.     DC.L    0,0
  10622.     DC.W    GD_QualTxt
  10623.     DC.L    0,0,0
  10624.     DC.W    5,21,67,12
  10625.     DC.L    OkText,0
  10626.     DC.W    GD_Ok
  10627.     DC.L    PLACETEXT_IN,0,0
  10628.     DC.W    350,21,67,12
  10629.     DC.L    CancelText,0
  10630.     DC.W    GD_Cancel
  10631.     DC.L    PLACETEXT_IN,0,0
  10632.  
  10633. QualWinGTags:
  10634.     DC.L    GTTX_Border,1
  10635.     DC.L    TAG_DONE
  10636.     DC.L    GT_Underscore,'_'
  10637.     DC.L    TAG_DONE
  10638.     DC.L    GT_Underscore,'_'
  10639.     DC.L    TAG_DONE
  10640.  
  10641.  
  10642. GD_QualTxt                             EQU    0
  10643. GD_Ok                                  EQU    1
  10644. GD_Cancel                              EQU    2
  10645.  
  10646.  
  10647.  
  10648.  
  10649. **********************************************************************
  10650. *                     Settings for cycle window                      *
  10651. **********************************************************************
  10652. CycleWinWindowTags:
  10653. CycleWinL:
  10654.     DC.L    WA_Left,0
  10655. CycleWinT:
  10656.     DC.L    WA_Top,0
  10657. CycleWinW:
  10658.     DC.L    WA_Width,0
  10659. CycleWinH:
  10660.     DC.L    WA_Height,0
  10661.     DC.L    WA_IDCMP,0
  10662.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  10663. CycleWinWG:
  10664.     DC.L    WA_Gadgets,0
  10665.     DC.L    WA_Title,CycleTitle
  10666.     DC.L    WA_ScreenTitle,WindowScrTitle
  10667. CycleWinSC:
  10668.     DC.L    WA_PubScreen,0
  10669.     DC.L    TAG_DONE
  10670.  
  10671. CycleWinGTypes:
  10672.     DC.W    CHECKBOX_KIND
  10673.     DC.W    SLIDER_KIND
  10674.     DC.W    SLIDER_KIND
  10675.     DC.W    SLIDER_KIND
  10676.     DC.W    BUTTON_KIND
  10677.     DC.W    BUTTON_KIND
  10678.     DC.W    BUTTON_KIND
  10679.     DC.W    TEXT_KIND
  10680.     DC.W    TEXT_KIND
  10681.     DC.W    TEXT_KIND
  10682.  
  10683. CycleWinNGads:
  10684.     DC.W    5,3,26,11
  10685.     DC.L    CycleOnText,0
  10686.     DC.W    GD_CycleOn
  10687.     DC.L    PLACETEXT_RIGHT,0,0
  10688.     DC.W    23,32,105,11
  10689.     DC.L    FrontClickText,0
  10690.     DC.W    GD_FrontClick
  10691.     DC.L    PLACETEXT_ABOVE,0,0
  10692.     DC.W    169,32,105,11
  10693.     DC.L    MiddleClickText,0
  10694.     DC.W    GD_MiddleClick
  10695.     DC.L    PLACETEXT_ABOVE,0,0
  10696.     DC.W    315,32,105,11
  10697.     DC.L    BackClickText,0
  10698.     DC.W    GD_BackClick
  10699.     DC.L    PLACETEXT_ABOVE,0,0
  10700.     DC.W    5,47,112,12
  10701.     DC.L    FrontKeyText,0
  10702.     DC.W    GD_FrontKey
  10703.     DC.L    PLACETEXT_IN,0,0
  10704.     DC.W    5,63,112,12
  10705.     DC.L    MiddleKeyText,0
  10706.     DC.W    GD_MiddleKey
  10707.     DC.L    PLACETEXT_IN,0,0
  10708.     DC.W    5,79,112,12
  10709.     DC.L    BackKeyText,0
  10710.     DC.W    GD_BackKey
  10711.     DC.L    PLACETEXT_IN,0,0
  10712.     DC.W    121,47,299,12
  10713.     DC.L    0,0
  10714.     DC.W    GD_FrontQual
  10715.     DC.L    0,0,0
  10716.     DC.W    121,63,299,12
  10717.     DC.L    0,0
  10718.     DC.W    GD_MiddleQual
  10719.     DC.L    0,0,0
  10720.     DC.W    121,79,299,12
  10721.     DC.L    0,0
  10722.     DC.W    GD_BackQual
  10723.     DC.L    0,0,0
  10724.  
  10725. CycleWinGTags:
  10726.     DC.L    GTCB_Scaled,-1
  10727.     DC.L    GT_Underscore,'_'
  10728.     DC.L    TAG_DONE
  10729.     DC.L    GTSL_Min,1
  10730.     DC.L    GTSL_Max,5
  10731.     DC.L    GTSL_MaxLevelLen,6
  10732.     DC.L    GTSL_LevelFormat,LIntFormat
  10733.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10734.     DC.L    GA_RelVerify,1
  10735.     DC.L    GT_Underscore,'_'
  10736.     DC.L    TAG_DONE
  10737.     DC.L    GTSL_Min,1
  10738.     DC.L    GTSL_Max,5
  10739.     DC.L    GTSL_MaxLevelLen,6
  10740.     DC.L    GTSL_LevelFormat,LIntFormat
  10741.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10742.     DC.L    GA_RelVerify,1
  10743.     DC.L    GT_Underscore,'_'
  10744.     DC.L    TAG_DONE
  10745.     DC.L    GTSL_Min,1
  10746.     DC.L    GTSL_Max,5
  10747.     DC.L    GTSL_MaxLevelLen,6
  10748.     DC.L    GTSL_LevelFormat,LIntFormat
  10749.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10750.     DC.L    GA_RelVerify,1
  10751.     DC.L    GT_Underscore,'_'
  10752.     DC.L    TAG_DONE
  10753.     DC.L    GT_Underscore,'_'
  10754.     DC.L    TAG_DONE
  10755.     DC.L    GT_Underscore,'_'
  10756.     DC.L    TAG_DONE
  10757.     DC.L    GT_Underscore,'_'
  10758.     DC.L    TAG_DONE
  10759.     DC.L    GTTX_Border,1
  10760.     DC.L    TAG_DONE
  10761.     DC.L    GTTX_Border,1
  10762.     DC.L    TAG_DONE
  10763.     DC.L    GTTX_Border,1
  10764.     DC.L    TAG_DONE
  10765.  
  10766.  
  10767. GD_CycleOn                             EQU    0
  10768. GD_FrontClick                          EQU    1
  10769. GD_MiddleClick                         EQU    2
  10770. GD_BackClick                           EQU    3
  10771. GD_FrontKey                            EQU    4
  10772. GD_MiddleKey                           EQU    5
  10773. GD_BackKey                             EQU    6
  10774. GD_FrontQual                           EQU    7
  10775. GD_MiddleQual                          EQU    8
  10776. GD_BackQual                            EQU    9
  10777.  
  10778.  
  10779.  
  10780.  
  10781.  
  10782. **********************************************************************
  10783. *                    Settings for Blanking window                    *
  10784. **********************************************************************
  10785. BlankWinWindowTags:
  10786. BlankWinL:
  10787.     DC.L    WA_Left,0
  10788. BlankWinT:
  10789.     DC.L    WA_Top,0
  10790. BlankWinW:
  10791.     DC.L    WA_Width,0
  10792. BlankWinH:
  10793.     DC.L    WA_Height,0
  10794.     DC.L    WA_IDCMP,0
  10795.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  10796. BlankWinWG:
  10797.     DC.L    WA_Gadgets,0
  10798.     DC.L    WA_Title,BlankTitle
  10799.     DC.L    WA_ScreenTitle,WindowScrTitle
  10800. BlankWinSC:
  10801.     DC.L    WA_PubScreen,0
  10802.     DC.L    TAG_DONE
  10803.  
  10804.  
  10805.  
  10806. BlankWinGTypes:
  10807.     DC.W    CHECKBOX_KIND
  10808.     DC.W    SLIDER_KIND
  10809.     DC.W    SLIDER_KIND
  10810.     DC.W    CYCLE_KIND
  10811.     DC.W    SLIDER_KIND
  10812.  
  10813. BlankWinNGads:
  10814.     DC.W    7,3,26,11
  10815.     DC.L    BlankMouseText,0
  10816.     DC.W    GD_BlankMouse
  10817.     DC.L    PLACETEXT_RIGHT,0,0
  10818.     DC.W    217,18,126,11
  10819.     DC.L    ScrTimeText,0
  10820.     DC.W    GD_ScrTime
  10821.     DC.L    PLACETEXT_LEFT,0,0
  10822.     DC.W    217,33,126,11
  10823.     DC.L    MouseTimeText,0
  10824.     DC.W    GD_MouseTime
  10825.     DC.L    PLACETEXT_LEFT,0,0
  10826.     DC.W    195,48,148,12
  10827.     DC.L    BlankTypeText,0
  10828.     DC.W    GD_BlankType
  10829.     DC.L    PLACETEXT_LEFT,0,0
  10830.     DC.W    195,64,148,11
  10831.     DC.L    DimmFacText,0
  10832.     DC.W    GD_DimmFac
  10833.     DC.L    PLACETEXT_LEFT,0,0
  10834.  
  10835.  
  10836. BlankWinGTags:
  10837.     DC.L    GTCB_Scaled,-1
  10838.     DC.L    GT_Underscore,'_'
  10839.     DC.L    TAG_DONE
  10840.     DC.L    GTSL_Max,1800
  10841.     DC.L    GTSL_MaxLevelLen,9
  10842.     DC.L    GTSL_LevelFormat,StringFormat
  10843.     DC.L    GTSL_DispFunc,ShowAlarm
  10844.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10845.     DC.L    GA_RelVerify,1
  10846.     DC.L    GT_Underscore,'_'
  10847.     DC.L    TAG_DONE
  10848.     DC.L    GTSL_Max,1800
  10849.     DC.L    GTSL_MaxLevelLen,9
  10850.     DC.L    GTSL_LevelFormat,StringFormat
  10851.     DC.L    GTSL_DispFunc,ShowAlarm
  10852.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10853.     DC.L    GA_RelVerify,1
  10854.     DC.L    GT_Underscore,'_'
  10855.     DC.L    TAG_DONE
  10856.     DC.L    GTCY_Labels,BlankTypeLabels
  10857.     DC.L    GT_Underscore,'_'
  10858.     DC.L    TAG_DONE
  10859.     DC.L    GTSL_Min,1
  10860.     DC.L    GTSL_Max,48
  10861.     DC.L    GTSL_MaxLevelLen,7
  10862.     DC.L    GTSL_LevelFormat,ScrDimmFormat
  10863.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10864.     DC.L    GA_RelVerify,1
  10865.     DC.L    GT_Underscore,'_'
  10866.     DC.L    TAG_DONE
  10867.  
  10868.  
  10869.  
  10870. BlankTypeLabels:
  10871.     DC.L    BlankTypeLab0
  10872.     DC.L    BlankTypeLab1
  10873.     DC.L    0
  10874.  
  10875.  
  10876. GD_BlankMouse                          EQU    0
  10877. GD_ScrTime                             EQU    1
  10878. GD_MouseTime                           EQU    2
  10879. GD_BlankType                           EQU    3
  10880. GD_DimmFac                             EQU    4
  10881.  
  10882.  
  10883.  
  10884.  
  10885.  
  10886.  
  10887.  
  10888.  
  10889.  
  10890. **********************************************************************
  10891. *                     Settings for Mouse window                      *
  10892. **********************************************************************
  10893. MouseWinWindowTags:
  10894. MouseWinL:
  10895.     DC.L    WA_Left,0
  10896. MouseWinT:
  10897.     DC.L    WA_Top,0
  10898. MouseWinW:
  10899.     DC.L    WA_Width,0
  10900. MouseWinH:
  10901.     DC.L    WA_Height,0
  10902.     DC.L    WA_IDCMP,0
  10903.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  10904. MouseWinWG:
  10905.     DC.L    WA_Gadgets,0
  10906.     DC.L    WA_Title,MouseTitle
  10907.     DC.L    WA_ScreenTitle,WindowScrTitle
  10908. MouseWinSC:
  10909.     DC.L    WA_PubScreen,0
  10910.     DC.L    TAG_DONE
  10911.  
  10912.  
  10913. MouseWinGTypes:
  10914.     DC.W    CHECKBOX_KIND
  10915.     DC.W    CHECKBOX_KIND
  10916.     DC.W    CHECKBOX_KIND
  10917.     DC.W    SLIDER_KIND
  10918.     DC.W    SLIDER_KIND
  10919.     DC.W    TEXT_KIND
  10920.     DC.W    TEXT_KIND
  10921.     DC.W    BUTTON_KIND
  10922.     DC.W    BUTTON_KIND
  10923.     DC.W    CHECKBOX_KIND
  10924.     DC.W    CHECKBOX_KIND
  10925.     DC.W    CHECKBOX_KIND
  10926.  
  10927. MouseWinNGads:
  10928.     DC.W    182,3,26,11
  10929.     DC.L    WindowActText,0
  10930.     DC.W    GD_WindowAct
  10931.     DC.L    PLACETEXT_LEFT,0,0
  10932.     DC.W    324,3,26,11
  10933.     DC.L    SunMouseText,0
  10934.     DC.W    GD_SunMouse
  10935.     DC.L    PLACETEXT_LEFT,0,0
  10936.     DC.W    532,3,26,11
  10937.     DC.L    MouseAccelText,0
  10938.     DC.W    GD_MouseAccel
  10939.     DC.L    PLACETEXT_LEFT,0,0
  10940.     DC.W    188,32,87,11
  10941.     DC.L    AccelerateText,0
  10942.     DC.W    GD_Accelerate
  10943.     DC.L    PLACETEXT_LEFT,0,0
  10944.     DC.W    471,32,87,11
  10945.     DC.L    ThresholdText,0
  10946.     DC.W    GD_Threshold
  10947.     DC.L    PLACETEXT_LEFT,0,0
  10948.     DC.W    216,60,342,12
  10949.     DC.L    0,0
  10950.     DC.W    GD_HoldX
  10951.     DC.L    0,0,0
  10952.     DC.W    216,75,342,12
  10953.     DC.L    0,0
  10954.     DC.W    GD_HoldY
  10955.     DC.L    0,0,0
  10956.     DC.W    6,60,207,12
  10957.     DC.L    HoldXQualText,0
  10958.     DC.W    GD_HoldXQual
  10959.     DC.L    PLACETEXT_IN,0,0
  10960.     DC.W    6,75,207,12
  10961.     DC.L    HoldYQualText,0
  10962.     DC.W    GD_HoldYQual
  10963.     DC.L    PLACETEXT_IN,0,0
  10964.     DC.W    6,47,26,11
  10965.     DC.L    LeftyText,0
  10966.     DC.W    GD_Lefty
  10967.     DC.L    PLACETEXT_RIGHT,0,0
  10968.     DC.W    532,47,26,11
  10969.     DC.L    HoldMouseText,0
  10970.     DC.W    GD_HoldMouse
  10971.     DC.L    PLACETEXT_LEFT,0,0
  10972.     DC.W    324,18,26,11
  10973.     DC.L    WinReActText,0
  10974.     DC.W    GD_WinReAct
  10975.     DC.L    PLACETEXT_LEFT,0,0
  10976.  
  10977. MouseWinGTags:
  10978.     DC.L    GTCB_Scaled,-1
  10979.     DC.L    GT_Underscore,'_'
  10980.     DC.L    TAG_DONE
  10981.     DC.L    GTCB_Scaled,-1
  10982.     DC.L    GT_Underscore,'_'
  10983.     DC.L    TAG_DONE
  10984.     DC.L    GTCB_Scaled,-1
  10985.     DC.L    GT_Underscore,'_'
  10986.     DC.L    TAG_DONE
  10987.     DC.L    GTSL_Min,2
  10988.     DC.L    GTSL_Max,10
  10989.     DC.L    GTSL_MaxLevelLen,6
  10990.     DC.L    GTSL_LevelFormat,ScrDimmFormat
  10991.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10992.     DC.L    GA_RelVerify,1
  10993.     DC.L    GT_Underscore,'_'
  10994.     DC.L    TAG_DONE
  10995.     DC.L    GTSL_Max,10
  10996.     DC.L    GTSL_MaxLevelLen,6
  10997.     DC.L    GTSL_LevelFormat,ScrDimmFormat
  10998.     DC.L    PGA_Freedom,LORIENT_HORIZ
  10999.     DC.L    GA_RelVerify,1
  11000.     DC.L    GT_Underscore,'_'
  11001.     DC.L    TAG_DONE
  11002.     DC.L    GTTX_Border,1
  11003.     DC.L    TAG_DONE
  11004.     DC.L    GTTX_Border,1
  11005.     DC.L    TAG_DONE
  11006.     DC.L    GT_Underscore,'_'
  11007.     DC.L    TAG_DONE
  11008.     DC.L    GT_Underscore,'_'
  11009.     DC.L    TAG_DONE
  11010.     DC.L    GTCB_Scaled,-1
  11011.     DC.L    GT_Underscore,'_'
  11012.     DC.L    TAG_DONE
  11013.     DC.L    GTCB_Scaled,-1
  11014.     DC.L    GT_Underscore,'_'
  11015.     DC.L    TAG_DONE
  11016.     DC.L    GTCB_Scaled,-1
  11017.     DC.L    GT_Underscore,'_'
  11018.     DC.L    TAG_DONE
  11019.  
  11020.  
  11021.  
  11022. GD_WindowAct                           EQU    0
  11023. GD_SunMouse                            EQU    1
  11024. GD_MouseAccel                          EQU    2
  11025. GD_Accelerate                          EQU    3
  11026. GD_Threshold                           EQU    4
  11027. GD_HoldX                               EQU    5
  11028. GD_HoldY                               EQU    6
  11029. GD_HoldXQual                           EQU    7
  11030. GD_HoldYQual                           EQU    8
  11031. GD_Lefty                               EQU    9
  11032. GD_HoldMouse                           EQU    10
  11033. GD_WinReAct                            EQU    11
  11034.  
  11035.  
  11036.  
  11037.  
  11038. **********************************************************************
  11039. *                    Settings for HotKeys window                     *
  11040. **********************************************************************
  11041. HotKeyWinWindowTags:
  11042. HotKeyWinL:
  11043.     DC.L    WA_Left,0
  11044. HotKeyWinT:
  11045.     DC.L    WA_Top,0
  11046. HotKeyWinW:
  11047.     DC.L    WA_Width,0
  11048. HotKeyWinH:
  11049.     DC.L    WA_Height,0
  11050.     DC.L    WA_IDCMP,0
  11051.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  11052. HotKeyWinWG:
  11053.     DC.L    WA_Gadgets,0
  11054.     DC.L    WA_Title,HotKeyTitle
  11055.     DC.L    WA_ScreenTitle,WindowScrTitle
  11056. HotKeyWinSC:
  11057.     DC.L    WA_PubScreen,0
  11058.     DC.L    TAG_DONE
  11059.  
  11060. HotKeyWinGTypes:
  11061.     DC.W    LISTVIEW_KIND
  11062.     DC.W    STRING_KIND
  11063.  
  11064.  
  11065. HotKeyWinNGads:
  11066.     DC.W    99,3,246,88
  11067.     DC.L    HotKeyListText,0
  11068.     DC.W    GD_HotKeyList
  11069.     DC.L    PLACETEXT_LEFT,0,0
  11070.     DC.W    97,93,248,13
  11071.     DC.L    HotKeyDefText,0
  11072.     DC.W    GD_HotKeyDef
  11073.     DC.L    PLACETEXT_LEFT,0,0
  11074.  
  11075.  
  11076. HotKeyWinGTags:
  11077.     DC.L    GTLV_Labels,HotKeyListList
  11078.     DC.L    GTLV_ShowSelected,0
  11079.     DC.L    GT_Underscore,'_'
  11080.     DC.L    TAG_DONE
  11081.     DC.L    STRINGA_ExitHelp,1
  11082.     DC.L    GTST_MaxChars,256
  11083.     DC.L    GT_Underscore,'_'
  11084.     DC.L    GA_Disabled,1
  11085.     DC.L    TAG_DONE
  11086.  
  11087.  
  11088. HotKeyListNodes0:
  11089.     DC.L    HotKeyListNodes1
  11090.     DC.L    HotKeyListList
  11091.     DC.B    0,0
  11092.     DC.L    HotKeyListName0
  11093. HotKeyListNodes1:
  11094.     DC.L    HotKeyListNodes2
  11095.     DC.L    HotKeyListNodes0
  11096.     DC.B    0,0
  11097.     DC.L    HotKeyListName1
  11098. HotKeyListNodes2:
  11099.     DC.L    HotKeyListNodes3
  11100.     DC.L    HotKeyListNodes1
  11101.     DC.B    0,0
  11102.     DC.L    HotKeyListName2
  11103. HotKeyListNodes3:
  11104.     DC.L    HotKeyListNodes4
  11105.     DC.L    HotKeyListNodes2
  11106.     DC.B    0,0
  11107.     DC.L    HotKeyListName3
  11108. HotKeyListNodes4:
  11109.     DC.L    HotKeyListNodes5
  11110.     DC.L    HotKeyListNodes3
  11111.     DC.B    0,0
  11112.     DC.L    HotKeyListName4
  11113. HotKeyListNodes5:
  11114.     DC.L    HotKeyListNodes6
  11115.     DC.L    HotKeyListNodes4
  11116.     DC.B    0,0
  11117.     DC.L    HotKeyListName5
  11118. HotKeyListNodes6:
  11119.     DC.L    HotKeyListNodes7
  11120.     DC.L    HotKeyListNodes5
  11121.     DC.B    0,0
  11122.     DC.L    HotKeyListName6
  11123. HotKeyListNodes7:
  11124.     DC.L    HotKeyListNodes8
  11125.     DC.L    HotKeyListNodes6
  11126.     DC.B    0,0
  11127.     DC.L    HotKeyListName7
  11128. HotKeyListNodes8:
  11129.     DC.L    HotKeyListNodes9
  11130.     DC.L    HotKeyListNodes7
  11131.     DC.B    0,0
  11132.     DC.L    HotKeyListName8
  11133. HotKeyListNodes9:
  11134.     DC.L    HotKeyListNodes10
  11135.     DC.L    HotKeyListNodes8
  11136.     DC.B    0,0
  11137.     DC.L    HotKeyListName9
  11138. HotKeyListNodes10:
  11139.     DC.L    HotKeyListNodes11
  11140.     DC.L    HotKeyListNodes9
  11141.     DC.B    0,0
  11142.     DC.L    HotKeyListName10
  11143. HotKeyListNodes11:
  11144.     DC.L    HotKeyListNodes12
  11145.     DC.L    HotKeyListNodes10
  11146.     DC.B    0,0
  11147.     DC.L    HotKeyListName11
  11148. HotKeyListNodes12:
  11149.     DC.L    HotKeyListNodes13
  11150.     DC.L    HotKeyListNodes11
  11151.     DC.B    0,0
  11152.     DC.L    HotKeyListName12
  11153. HotKeyListNodes13:
  11154.     DC.L    HotKeyListList+4
  11155.     DC.L    HotKeyListNodes12
  11156.     DC.B    0,0
  11157.     DC.L    HotKeyListName13
  11158. HotKeyListList:
  11159.     DC.L    HotKeyListNodes0,0,HotKeyListNodes13
  11160.  
  11161.  
  11162. GD_HotKeyList                          EQU    0
  11163. GD_HotKeyDef                           EQU    1
  11164.  
  11165.  
  11166.  
  11167.  
  11168.  
  11169.  
  11170. **********************************************************************
  11171. *                       FKeys window settings                        *
  11172. **********************************************************************
  11173. FKeyWinWindowTags:
  11174. FKeyWinL:
  11175.     DC.L    WA_Left,0
  11176. FKeyWinT:
  11177.     DC.L    WA_Top,0
  11178. FKeyWinW:
  11179.     DC.L    WA_Width,0
  11180. FKeyWinH:
  11181.     DC.L    WA_Height,0
  11182.     DC.L    WA_IDCMP,0
  11183.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  11184. FKeyWinWG:
  11185.     DC.L    WA_Gadgets,0
  11186.     DC.L    WA_Title,FKeyTitle
  11187.     DC.L    WA_ScreenTitle,WindowScrTitle
  11188. FKeyWinSC:
  11189.     DC.L    WA_PubScreen,0
  11190.     DC.L    TAG_DONE
  11191.  
  11192.  
  11193. FKeyWinGTypes:
  11194.     DC.W    STRING_KIND
  11195.     DC.W    STRING_KIND
  11196.     DC.W    STRING_KIND
  11197.     DC.W    STRING_KIND
  11198.     DC.W    STRING_KIND
  11199.     DC.W    STRING_KIND
  11200.     DC.W    STRING_KIND
  11201.     DC.W    STRING_KIND
  11202.     DC.W    STRING_KIND
  11203.     DC.W    STRING_KIND
  11204.     DC.W    CYCLE_KIND
  11205.     DC.W    CHECKBOX_KIND
  11206.     DC.W    BUTTON_KIND
  11207.     DC.W    BUTTON_KIND
  11208.  
  11209. FKeyWinNGads:
  11210.     DC.W    36,2,322,12
  11211.     DC.L    F1Text,0
  11212.     DC.W    GD_F1
  11213.     DC.L    PLACETEXT_LEFT,0,0
  11214.     DC.W    36,16,322,12
  11215.     DC.L    F2Text,0
  11216.     DC.W    GD_F2
  11217.     DC.L    PLACETEXT_LEFT,0,0
  11218.     DC.W    36,30,322,12
  11219.     DC.L    F3Text,0
  11220.     DC.W    GD_F3
  11221.     DC.L    PLACETEXT_LEFT,0,0
  11222.     DC.W    36,44,322,12
  11223.     DC.L    F4Text,0
  11224.     DC.W    GD_F4
  11225.     DC.L    PLACETEXT_LEFT,0,0
  11226.     DC.W    36,58,322,12
  11227.     DC.L    F5Text,0
  11228.     DC.W    GD_F5
  11229.     DC.L    PLACETEXT_LEFT,0,0
  11230.     DC.W    36,72,322,12
  11231.     DC.L    F6Text,0
  11232.     DC.W    GD_F6
  11233.     DC.L    PLACETEXT_LEFT,0,0
  11234.     DC.W    36,86,322,12
  11235.     DC.L    F7Text,0
  11236.     DC.W    GD_F7
  11237.     DC.L    PLACETEXT_LEFT,0,0
  11238.     DC.W    36,100,322,12
  11239.     DC.L    F8Text,0
  11240.     DC.W    GD_F8
  11241.     DC.L    PLACETEXT_LEFT,0,0
  11242.     DC.W    36,114,322,12
  11243.     DC.L    F9Text,0
  11244.     DC.W    GD_F9
  11245.     DC.L    PLACETEXT_LEFT,0,0
  11246.     DC.W    36,128,322,12
  11247.     DC.L    F10Text,0
  11248.     DC.W    GD_F10
  11249.     DC.L    PLACETEXT_LEFT,0,0
  11250.     DC.W    116,144,109,12
  11251.     DC.L    FKeyQualText,0
  11252.     DC.W    GD_FKeyQual
  11253.     DC.L    PLACETEXT_LEFT,0,0
  11254.     DC.W    332,144,26,11
  11255.     DC.L    FKeyActText,0
  11256.     DC.W    GD_FKeyAct
  11257.     DC.L    PLACETEXT_LEFT,0,0
  11258.     DC.W    36,160,82,12
  11259.     DC.L    FKeyOkText,0
  11260.     DC.W    GD_FKeyOk
  11261.     DC.L    PLACETEXT_IN,0,0
  11262.     DC.W    276,160,82,12
  11263.     DC.L    FKeyCancelText,0
  11264.     DC.W    GD_FKeyCancel
  11265.     DC.L    PLACETEXT_IN,0,0
  11266.  
  11267. FKeyWinGTags:
  11268.     DC.L    GTST_EditHook,StrEditHook
  11269.     DC.L    STRINGA_ExitHelp,1
  11270.     DC.L    GTST_MaxChars,256
  11271.     DC.L    GT_Underscore,'_'
  11272.     DC.L    TAG_DONE
  11273.     DC.L    GTST_EditHook,StrEditHook
  11274.     DC.L    STRINGA_ExitHelp,1
  11275.     DC.L    GTST_MaxChars,256
  11276.     DC.L    GT_Underscore,'_'
  11277.     DC.L    TAG_DONE
  11278.     DC.L    GTST_EditHook,StrEditHook
  11279.     DC.L    STRINGA_ExitHelp,1
  11280.     DC.L    GTST_MaxChars,256
  11281.     DC.L    GT_Underscore,'_'
  11282.     DC.L    TAG_DONE
  11283.     DC.L    GTST_EditHook,StrEditHook
  11284.     DC.L    STRINGA_ExitHelp,1
  11285.     DC.L    GTST_MaxChars,256
  11286.     DC.L    GT_Underscore,'_'
  11287.     DC.L    TAG_DONE
  11288.     DC.L    GTST_EditHook,StrEditHook
  11289.     DC.L    STRINGA_ExitHelp,1
  11290.     DC.L    GTST_MaxChars,256
  11291.     DC.L    GT_Underscore,'_'
  11292.     DC.L    TAG_DONE
  11293.     DC.L    GTST_EditHook,StrEditHook
  11294.     DC.L    STRINGA_ExitHelp,1
  11295.     DC.L    GTST_MaxChars,256
  11296.     DC.L    GT_Underscore,'_'
  11297.     DC.L    TAG_DONE
  11298.     DC.L    GTST_EditHook,StrEditHook
  11299.     DC.L    STRINGA_ExitHelp,1
  11300.     DC.L    GTST_MaxChars,256
  11301.     DC.L    GT_Underscore,'_'
  11302.     DC.L    TAG_DONE
  11303.     DC.L    GTST_EditHook,StrEditHook
  11304.     DC.L    STRINGA_ExitHelp,1
  11305.     DC.L    GTST_MaxChars,256
  11306.     DC.L    GT_Underscore,'_'
  11307.     DC.L    TAG_DONE
  11308.     DC.L    GTST_EditHook,StrEditHook
  11309.     DC.L    STRINGA_ExitHelp,1
  11310.     DC.L    GTST_MaxChars,256
  11311.     DC.L    GT_Underscore,'_'
  11312.     DC.L    TAG_DONE
  11313.     DC.L    GTST_EditHook,StrEditHook
  11314.     DC.L    STRINGA_ExitHelp,1
  11315.     DC.L    GTST_MaxChars,256
  11316.     DC.L    GT_Underscore,'_'
  11317.     DC.L    TAG_DONE
  11318.     DC.L    GTCY_Labels,FKeyQualLabels
  11319.     DC.L    GT_Underscore,'_'
  11320.     DC.L    TAG_DONE
  11321.     DC.L    GTCB_Scaled,-1
  11322.     DC.L    GT_Underscore,'_'
  11323.     DC.L    TAG_DONE
  11324.     DC.L    GT_Underscore,'_'
  11325.     DC.L    TAG_DONE
  11326.     DC.L    GT_Underscore,'_'
  11327.     DC.L    TAG_DONE
  11328.  
  11329.  
  11330. FKeyQualLabels:
  11331.     DC.L    FKeyQualLab0
  11332.     DC.L    FKeyQualLab1
  11333.     DC.L    FKeyQualLab2
  11334.     DC.L    FKeyQualLab3
  11335.     DC.L    0
  11336.  
  11337. FKeyQualFlags    dc.w    0,0
  11338.         dc.w    IEQUALIFIER_LSHIFT,IEQUALIFIER_RSHIFT
  11339.         dc.w    IEQUALIFIER_LALT,IEQUALIFIER_RALT
  11340.         dc.w    IEQUALIFIER_CONTROL,-1
  11341.  
  11342.  
  11343. GD_F1                                  EQU    0
  11344. GD_F2                                  EQU    1
  11345. GD_F3                                  EQU    2
  11346. GD_F4                                  EQU    3
  11347. GD_F5                                  EQU    4
  11348. GD_F6                                  EQU    5
  11349. GD_F7                                  EQU    6
  11350. GD_F8                                  EQU    7
  11351. GD_F9                                  EQU    8
  11352. GD_F10                                 EQU    9
  11353. GD_FKeyQual                            EQU    10
  11354. GD_FKeyAct                             EQU    11
  11355. GD_FKeyOk                              EQU    12
  11356. GD_FKeyCancel                          EQU    13
  11357.  
  11358.  
  11359.  
  11360.  
  11361.  
  11362. **********************************************************************
  11363. *                  Settings for Preferences window                   *
  11364. **********************************************************************
  11365. PrefsWinWindowTags:
  11366. PrefsWinL:
  11367.     DC.L    WA_Left,0
  11368. PrefsWinT:
  11369.     DC.L    WA_Top,0
  11370. PrefsWinW:
  11371.     DC.L    WA_Width,0
  11372. PrefsWinH:
  11373.     DC.L    WA_Height,0
  11374.     DC.L    WA_IDCMP,0
  11375.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  11376. PrefsWinWG:
  11377.     DC.L    WA_Gadgets,0
  11378.     DC.L    WA_Title,PrefsTitle
  11379.     DC.L    WA_ScreenTitle,WindowScrTitle
  11380. PrefsWinSC:
  11381.     DC.L    WA_PubScreen,0
  11382.     DC.L    TAG_DONE
  11383.  
  11384.  
  11385. PrefsWinGTypes:
  11386.     DC.W    INTEGER_KIND
  11387.     DC.W    INTEGER_KIND
  11388.     DC.W    INTEGER_KIND
  11389.     DC.W    INTEGER_KIND
  11390.     DC.W    INTEGER_KIND
  11391.     DC.W    INTEGER_KIND
  11392.     DC.W    INTEGER_KIND
  11393.     DC.W    SLIDER_KIND
  11394.     DC.W    SLIDER_KIND
  11395.     DC.W    CHECKBOX_KIND
  11396.     DC.W    BUTTON_KIND
  11397.     DC.W    BUTTON_KIND
  11398.     DC.W    STRING_KIND
  11399.     DC.W    BUTTON_KIND
  11400.     DC.W    STRING_KIND
  11401.     DC.W    TEXT_KIND
  11402.     DC.W    CHECKBOX_KIND
  11403.     DC.W    CHECKBOX_KIND
  11404.     DC.W    CHECKBOX_KIND
  11405.     DC.W    CHECKBOX_KIND
  11406.     DC.W    CHECKBOX_KIND
  11407.     DC.W    CHECKBOX_KIND
  11408.     DC.W    CHECKBOX_KIND
  11409.     DC.W    CHECKBOX_KIND
  11410.  
  11411. PrefsWinNGads:
  11412.     DC.W    104,3,52,13
  11413.     DC.L    Normal1Text,0
  11414.     DC.W    GD_Normal1
  11415.     DC.L    PLACETEXT_LEFT,0,0
  11416.     DC.W    271,3,52,13
  11417.     DC.L    Cheap1Text,0
  11418.     DC.W    GD_Cheap1
  11419.     DC.L    PLACETEXT_LEFT,0,0
  11420.     DC.W    104,20,52,13
  11421.     DC.L    Normal2Text,0
  11422.     DC.W    GD_Normal2
  11423.     DC.L    PLACETEXT_LEFT,0,0
  11424.     DC.W    271,20,52,13
  11425.     DC.L    Cheap2Text,0
  11426.     DC.W    GD_Cheap2
  11427.     DC.L    PLACETEXT_LEFT,0,0
  11428.     DC.W    104,37,52,13
  11429.     DC.L    Normal3Text,0
  11430.     DC.W    GD_Normal3
  11431.     DC.L    PLACETEXT_LEFT,0,0
  11432.     DC.W    271,37,52,13
  11433.     DC.L    Cheap3Text,0
  11434.     DC.W    GD_Cheap3
  11435.     DC.L    PLACETEXT_LEFT,0,0
  11436.     DC.W    171,54,52,13
  11437.     DC.L    CostUnitText,0
  11438.     DC.W    GD_CostUnit
  11439.     DC.L    PLACETEXT_LEFT,0,0
  11440.     DC.W    233,71,90,11
  11441.     DC.L    StartNormText,0
  11442.     DC.W    GD_StartNorm
  11443.     DC.L    PLACETEXT_LEFT,0,0
  11444.     DC.W    233,86,90,11
  11445.     DC.L    StartCheapText,0
  11446.     DC.W    GD_StartCheap
  11447.     DC.L    PLACETEXT_LEFT,0,0
  11448.     DC.W    22,101,26,11
  11449.     DC.L    PopUpBillText,0
  11450.     DC.W    GD_PopUpBill
  11451.     DC.L    PLACETEXT_RIGHT,0,0
  11452.     DC.W    22,131,121,12
  11453.     DC.L    ClearLogText,0
  11454.     DC.W    GD_ClearLog
  11455.     DC.L    PLACETEXT_IN,0,0
  11456.     DC.W    147,131,176,12
  11457.     DC.L    TotalSumText,0
  11458.     DC.W    GD_TotalSum
  11459.     DC.L    PLACETEXT_IN,0,0
  11460.     DC.W    166,147,157,13
  11461.     DC.L    OpenBillText,0
  11462.     DC.W    GD_OpenBill
  11463.     DC.L    PLACETEXT_LEFT,0,0
  11464.     DC.W    22,164,157,12
  11465.     DC.L    SaveLogText,0
  11466.     DC.W    GD_SaveLog
  11467.     DC.L    PLACETEXT_IN,0,0
  11468.     DC.W    182,163,141,14
  11469.     DC.L    LogNameText,0
  11470.     DC.W    GD_LogName
  11471.     DC.L    PLACETEXT_RIGHT,0,0
  11472.     DC.W    333,3,121,12
  11473.     DC.L    0,0
  11474.     DC.W    GD_EverCheap
  11475.     DC.L    0,0,0
  11476.     DC.W    333,19,26,11
  11477.     DC.L    SundayText,0
  11478.     DC.W    GD_Sunday
  11479.     DC.L    PLACETEXT_RIGHT,0,0
  11480.     DC.W    333,34,26,11
  11481.     DC.L    MondayText,0
  11482.     DC.W    GD_Monday
  11483.     DC.L    PLACETEXT_RIGHT,0,0
  11484.     DC.W    333,49,26,11
  11485.     DC.L    TuesdayText,0
  11486.     DC.W    GD_Tuesday
  11487.     DC.L    PLACETEXT_RIGHT,0,0
  11488.     DC.W    333,64,26,11
  11489.     DC.L    WednesdayText,0
  11490.     DC.W    GD_Wednesday
  11491.     DC.L    PLACETEXT_RIGHT,0,0
  11492.     DC.W    333,79,26,11
  11493.     DC.L    ThursdayText,0
  11494.     DC.W    GD_Thursday
  11495.     DC.L    PLACETEXT_RIGHT,0,0
  11496.     DC.W    333,94,26,11
  11497.     DC.L    FridayText,0
  11498.     DC.W    GD_Friday
  11499.     DC.L    PLACETEXT_RIGHT,0,0
  11500.     DC.W    333,109,26,11
  11501.     DC.L    SaturdayText,0
  11502.     DC.W    GD_Saturday
  11503.     DC.L    PLACETEXT_RIGHT,0,0
  11504.     DC.W    22,116,26,11
  11505.     DC.L    ActiveBillText,0
  11506.     DC.W    GD_ActiveBill
  11507.     DC.L    PLACETEXT_RIGHT,0,0
  11508.  
  11509.  
  11510. PrefsWinGTags:
  11511.     DC.L    GTST_EditHook,StrEditHook
  11512.     DC.L    STRINGA_ExitHelp,1
  11513.     DC.L    GTIN_Number,0
  11514.     DC.L    GTIN_MaxChars,4
  11515.     DC.L    GT_Underscore,'_'
  11516.     DC.L    TAG_DONE
  11517.     DC.L    GTST_EditHook,StrEditHook
  11518.     DC.L    STRINGA_ExitHelp,1
  11519.     DC.L    GTIN_Number,0
  11520.     DC.L    GTIN_MaxChars,4
  11521.     DC.L    GT_Underscore,'_'
  11522.     DC.L    TAG_DONE
  11523.     DC.L    GTST_EditHook,StrEditHook
  11524.     DC.L    STRINGA_ExitHelp,1
  11525.     DC.L    GTIN_Number,0
  11526.     DC.L    GTIN_MaxChars,4
  11527.     DC.L    GT_Underscore,'_'
  11528.     DC.L    TAG_DONE
  11529.     DC.L    GTST_EditHook,StrEditHook
  11530.     DC.L    STRINGA_ExitHelp,1
  11531.     DC.L    GTIN_Number,0
  11532.     DC.L    GTIN_MaxChars,4
  11533.     DC.L    GT_Underscore,'_'
  11534.     DC.L    TAG_DONE
  11535.     DC.L    GTST_EditHook,StrEditHook
  11536.     DC.L    STRINGA_ExitHelp,1
  11537.     DC.L    GTIN_Number,0
  11538.     DC.L    GTIN_MaxChars,4
  11539.     DC.L    GT_Underscore,'_'
  11540.     DC.L    TAG_DONE
  11541.     DC.L    GTST_EditHook,StrEditHook
  11542.     DC.L    STRINGA_ExitHelp,1
  11543.     DC.L    GTIN_Number,0
  11544.     DC.L    GTIN_MaxChars,4
  11545.     DC.L    GT_Underscore,'_'
  11546.     DC.L    TAG_DONE
  11547.     DC.L    GTST_EditHook,StrEditHook
  11548.     DC.L    STRINGA_ExitHelp,1
  11549.     DC.L    GTIN_Number,0
  11550.     DC.L    GTIN_MaxChars,4
  11551.     DC.L    GT_Underscore,'_'
  11552.     DC.L    TAG_DONE
  11553.     DC.L    GTSL_Max,143
  11554.     DC.L    GTSL_MaxLevelLen,9
  11555.     DC.L    GTSL_LevelFormat,StringFormat
  11556.     DC.L    GTSL_DispFunc,ShowTime
  11557.     DC.L    PGA_Freedom,LORIENT_HORIZ
  11558.     DC.L    GA_RelVerify,1
  11559.     DC.L    GT_Underscore,'_'
  11560.     DC.L    TAG_DONE
  11561.     DC.L    GTSL_Max,143
  11562.     DC.L    GTSL_MaxLevelLen,9
  11563.     DC.L    GTSL_LevelFormat,StringFormat
  11564.     DC.L    GTSL_DispFunc,ShowTime
  11565.     DC.L    PGA_Freedom,LORIENT_HORIZ
  11566.     DC.L    GA_RelVerify,1
  11567.     DC.L    GT_Underscore,'_'
  11568.     DC.L    TAG_DONE
  11569.     DC.L    GTCB_Scaled,-1
  11570.     DC.L    GT_Underscore,'_'
  11571.     DC.L    TAG_DONE
  11572.     DC.L    GT_Underscore,'_'
  11573.     DC.L    TAG_DONE
  11574.     DC.L    GT_Underscore,'_'
  11575.     DC.L    TAG_DONE
  11576.     DC.L    GTST_EditHook,StrEditHook
  11577.     DC.L    STRINGA_ExitHelp,1
  11578.     DC.L    GTST_MaxChars,256
  11579.     DC.L    GT_Underscore,'_'
  11580.     DC.L    TAG_DONE
  11581.     DC.L    GT_Underscore,'_'
  11582.     DC.L    TAG_DONE
  11583.     DC.L    GTST_EditHook,StrEditHook
  11584.     DC.L    STRINGA_ExitHelp,1
  11585.     DC.L    GTST_MaxChars,300
  11586.     DC.L    GT_Underscore,'_'
  11587.     DC.L    TAG_DONE
  11588.     DC.L    GTTX_Text,EverCheapString
  11589.     DC.L    TAG_DONE
  11590.     DC.L    GTCB_Scaled,-1
  11591.     DC.L    GT_Underscore,'_'
  11592.     DC.L    TAG_DONE
  11593.     DC.L    GTCB_Scaled,-1
  11594.     DC.L    GT_Underscore,'_'
  11595.     DC.L    TAG_DONE
  11596.     DC.L    GTCB_Scaled,-1
  11597.     DC.L    GT_Underscore,'_'
  11598.     DC.L    TAG_DONE
  11599.     DC.L    GTCB_Scaled,-1
  11600.     DC.L    GT_Underscore,'_'
  11601.     DC.L    TAG_DONE
  11602.     DC.L    GTCB_Scaled,-1
  11603.     DC.L    GT_Underscore,'_'
  11604.     DC.L    TAG_DONE
  11605.     DC.L    GTCB_Scaled,-1
  11606.     DC.L    GT_Underscore,'_'
  11607.     DC.L    TAG_DONE
  11608.     DC.L    GTCB_Scaled,-1
  11609.     DC.L    GT_Underscore,'_'
  11610.     DC.L    TAG_DONE
  11611.     DC.L    GTCB_Scaled,-1
  11612.     DC.L    GT_Underscore,'_'
  11613.     DC.L    TAG_DONE
  11614.  
  11615.  
  11616.  
  11617. GD_Normal1                             EQU    0
  11618. GD_Cheap1                              EQU    1
  11619. GD_Normal2                             EQU    2
  11620. GD_Cheap2                              EQU    3
  11621. GD_Normal3                             EQU    4
  11622. GD_Cheap3                              EQU    5
  11623. GD_CostUnit                            EQU    6
  11624. GD_StartNorm                           EQU    7
  11625. GD_StartCheap                          EQU    8
  11626. GD_PopUpBill                           EQU    9
  11627. GD_ClearLog                            EQU    10
  11628. GD_TotalSum                            EQU    11
  11629. GD_OpenBill                            EQU    12
  11630. GD_SaveLog                             EQU    13
  11631. GD_LogName                             EQU    14
  11632. GD_EverCheap                           EQU    15
  11633. GD_Sunday                              EQU    16
  11634. GD_Monday                              EQU    17
  11635. GD_Tuesday                             EQU    18
  11636. GD_Wednesday                           EQU    19
  11637. GD_Thursday                            EQU    20
  11638. GD_Friday                              EQU    21
  11639. GD_Saturday                            EQU    22
  11640. GD_ActiveBill                          EQU    23
  11641.  
  11642.  
  11643.  
  11644. **********************************************************************
  11645. *                      Settings for lock window                      *
  11646. **********************************************************************
  11647. LockWinWindowTags:
  11648. LockWinL:
  11649.     DC.L    WA_Left,0
  11650. LockWinT:
  11651.     DC.L    WA_Top,0
  11652. LockWinW:
  11653.     DC.L    WA_Width,0
  11654. LockWinH:
  11655.     DC.L    WA_Height,0
  11656.     DC.L    WA_IDCMP,0
  11657.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  11658. LockWinWG:
  11659.     DC.L    WA_Gadgets,0
  11660.     DC.L    WA_Title,0
  11661.     DC.L    WA_ScreenTitle,0
  11662. LockWinSC:
  11663.     DC.L    WA_PubScreen,0
  11664.     DC.L    TAG_DONE
  11665.  
  11666.  
  11667. LockWinGTypes:
  11668.     DC.W    STRING_KIND
  11669.     DC.W    LISTVIEW_KIND
  11670.     DC.W    BUTTON_KIND
  11671.     DC.W    BUTTON_KIND
  11672.     DC.W    BUTTON_KIND
  11673.     DC.W    CYCLE_KIND
  11674.  
  11675. LockWinNGads:
  11676.     DC.W    164,64,422,14
  11677.     DC.L    WindowNameText,0
  11678.     DC.W    GD_WindowName
  11679.     DC.L    PLACETEXT_LEFT,0,0
  11680.     DC.W    164,4,422,72
  11681.     DC.L    WindowListText,0
  11682.     DC.W    GD_WindowList
  11683.     DC.L    PLACETEXT_LEFT,0,0
  11684.     DC.W    164,82,139,12
  11685.     DC.L    AddWindowText,0
  11686.     DC.W    GD_AddWindow
  11687.     DC.L    PLACETEXT_IN,0,0
  11688.     DC.W    305,82,139,12
  11689.     DC.L    SelectWindowText,0
  11690.     DC.W    GD_SelectWindow
  11691.     DC.L    PLACETEXT_IN,0,0
  11692.     DC.W    446,82,139,12
  11693.     DC.L    DeleteWindowText,0
  11694.     DC.W    GD_DeleteWindow
  11695.     DC.L    PLACETEXT_IN,0,0
  11696.     DC.W    62,82,100,12
  11697.     DC.L    LockListTypeText,0
  11698.     DC.W    GD_LockListType
  11699.     DC.L    PLACETEXT_LEFT,0,0
  11700.  
  11701. LockWinGTags:
  11702.     DC.L    STRINGA_ExitHelp,1
  11703.     DC.L    GTST_MaxChars,60
  11704.     DC.L    GT_Underscore,'_'
  11705.     DC.L    GA_Disabled,1
  11706.     DC.L    TAG_DONE
  11707. WindowListGad
  11708.     DC.L    GTLV_ShowSelected,0
  11709. WindowListList
  11710.     DC.L    GTLV_Labels,0
  11711.     DC.L    GT_Underscore,'_'
  11712.     DC.L    TAG_DONE
  11713.     DC.L    GT_Underscore,'_'
  11714.     DC.L    TAG_DONE
  11715.     DC.L    GT_Underscore,'_'
  11716.     DC.L    GA_Disabled,1
  11717.     DC.L    TAG_DONE
  11718.     DC.L    GT_Underscore,'_'
  11719.     DC.L    GA_Disabled,1
  11720.     DC.L    TAG_DONE
  11721.     DC.L    GTCY_Labels,LockListTypeLabels
  11722.     DC.L    GT_Underscore,'_'
  11723.     DC.L    TAG_DONE
  11724.  
  11725.  
  11726. LockListTypeLabels:
  11727.     DC.L    LockListTypeLab0
  11728.     DC.L    LockListTypeLab1
  11729.     DC.L    0
  11730.  
  11731. GD_WindowName                          EQU    0
  11732. GD_WindowList                          EQU    1
  11733. GD_AddWindow                           EQU    2
  11734. GD_SelectWindow                        EQU    3
  11735. GD_DeleteWindow                        EQU    4
  11736. GD_LockListType                        EQU    5
  11737.  
  11738.  
  11739.  
  11740.  
  11741.  
  11742.  
  11743.  
  11744. **********************************************************************
  11745. *                    Definitions for Task-Window                     *
  11746. **********************************************************************
  11747. TaskWinWindowTags:
  11748. TaskWinL:
  11749.     DC.L    WA_Left,0
  11750. TaskWinT:
  11751.     DC.L    WA_Top,0
  11752. TaskWinW:
  11753.     DC.L    WA_Width,0
  11754. TaskWinH:
  11755.     DC.L    WA_Height,0
  11756.     DC.L    WA_IDCMP,0
  11757.     DC.L    WA_Flags,WFLG_CLOSEGADGET!WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  11758. TaskWinWG:
  11759.     DC.L    WA_Gadgets,0
  11760.     DC.L    WA_Title,TaskWinWTitle
  11761.     DC.L    WA_ScreenTitle,WindowScrTitle
  11762. TaskWinSC:
  11763.     DC.L    WA_PubScreen,0
  11764.     DC.L    TAG_DONE
  11765.  
  11766. TaskWinGTypes:
  11767.     DC.W    LISTVIEW_KIND
  11768. TaskWinNGads:
  11769.     DC.W    5,2,395,76
  11770.     DC.L    0,0
  11771.     DC.W    GD_TaskList
  11772.     DC.L    0,0,0
  11773. TaskWinGTags:
  11774. Zero3
  11775.     DC.L    GTLV_Labels,TaskListBase
  11776.     DC.L    TAG_DONE
  11777.  
  11778.  
  11779. GD_TaskList                            EQU    0
  11780.  
  11781.  
  11782.  
  11783.  
  11784.  
  11785.  
  11786. **********************************************************************
  11787. *                 Definitions for TagScreens window                  *
  11788. **********************************************************************
  11789. TagScrWinWindowTags:
  11790. TagScrWinL:
  11791.     DC.L    WA_Left,0
  11792. TagScrWinT:
  11793.     DC.L    WA_Top,0
  11794. TagScrWinW:
  11795.     DC.L    WA_Width,0
  11796. TagScrWinH:
  11797.     DC.L    WA_Height,0
  11798.     DC.L    WA_IDCMP,0
  11799.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  11800. TagScrWinWG:
  11801.     DC.L    WA_Gadgets,0
  11802.     DC.L    WA_Title,TagScrWinWTitle
  11803.     DC.L    WA_ScreenTitle,WindowScrTitle
  11804. TagScrWinSC:
  11805.     DC.L    WA_PubScreen,0
  11806.     DC.L    TAG_DONE
  11807.  
  11808.  
  11809. TagScrWinGTypes:
  11810.     DC.W    CHECKBOX_KIND
  11811.     DC.W    CHECKBOX_KIND
  11812.     DC.W    CHECKBOX_KIND
  11813.     DC.W    CHECKBOX_KIND
  11814.     DC.W    BUTTON_KIND
  11815.     DC.W    TEXT_KIND
  11816.     DC.W    BUTTON_KIND
  11817.     DC.W    BUTTON_KIND
  11818.     DC.W    STRING_KIND
  11819.     DC.W    LISTVIEW_KIND
  11820.     DC.W    BUTTON_KIND
  11821.     DC.W    BUTTON_KIND
  11822.     DC.W    INTEGER_KIND
  11823.     DC.W    INTEGER_KIND
  11824.     DC.W    CHECKBOX_KIND
  11825.     DC.W    CHECKBOX_KIND
  11826.     DC.W    CHECKBOX_KIND
  11827.     DC.W    CHECKBOX_KIND
  11828.     DC.W    CHECKBOX_KIND
  11829.     DC.W    CHECKBOX_KIND
  11830.     DC.W    CHECKBOX_KIND
  11831.  
  11832.  
  11833.  
  11834. TagScrWinNGads:
  11835.     DC.W    7,3,26,11
  11836.     DC.L    TagScreensOnText,0
  11837.     DC.W    GD_TagScreensOn
  11838.     DC.L    PLACETEXT_RIGHT,0,0
  11839.     DC.W    7,102,26,11
  11840.     DC.L    TagNoMonText,0
  11841.     DC.W    GD_TagNoMon
  11842.     DC.L    PLACETEXT_RIGHT,0,0
  11843.     DC.W    191,89,26,11
  11844.     DC.L    TagAutoScrText,0
  11845.     DC.W    GD_TagAutoScr
  11846.     DC.L    PLACETEXT_RIGHT,0,0
  11847.     DC.W    364,89,26,11
  11848.     DC.L    TagNoFntText,0
  11849.     DC.W    GD_TagNoFnt
  11850.     DC.L    PLACETEXT_RIGHT,0,0
  11851.     DC.W    7,142,134,12
  11852.     DC.L    TagScrModeText,0
  11853.     DC.W    GD_TagScrMode
  11854.     DC.L    PLACETEXT_IN,0,0
  11855.     DC.W    144,142,375,12
  11856.     DC.L    0,0
  11857.     DC.W    GD_TagScrModeType
  11858.     DC.L    0,0,0
  11859.     DC.W    378,18,141,12
  11860.     DC.L    AddTagTskText,0
  11861.     DC.W    GD_AddTagTsk
  11862.     DC.L    PLACETEXT_IN,0,0
  11863.     DC.W    378,72,141,12
  11864.     DC.L    RemTagTskText,0
  11865.     DC.W    GD_RemTagTsk
  11866.     DC.L    PLACETEXT_IN,0,0
  11867.     DC.W    100,45,275,14
  11868.     DC.L    TagTaskNameText,0
  11869.     DC.W    GD_TagTaskName
  11870.     DC.L    PLACETEXT_LEFT,0,0
  11871.     DC.W    100,18,275,64
  11872.     DC.L    TagTaskListText,0
  11873.     DC.W    GD_TagTaskList
  11874.     DC.L    PLACETEXT_LEFT,0,0
  11875.     DC.W    378,54,141,12
  11876.     DC.L    SelectTagTaskText,0
  11877.     DC.W    GD_SelectTagTask
  11878.     DC.L    PLACETEXT_IN,0,0
  11879.     DC.W    378,36,141,12
  11880.     DC.L    AddTagGlobalText,0
  11881.     DC.W    GD_AddTagGlobal
  11882.     DC.L    PLACETEXT_IN,0,0
  11883.     DC.W    7,158,78,13
  11884.     DC.L    TagScrWidthText,0
  11885.     DC.W    GD_TagScrWidth
  11886.     DC.L    PLACETEXT_RIGHT,0,0
  11887.     DC.W    293,158,78,13
  11888.     DC.L    TagScrHeightText,0
  11889.     DC.W    GD_TagScrHeight
  11890.     DC.L    PLACETEXT_RIGHT,0,0
  11891.     DC.W    7,89,26,11
  11892.     DC.L    TagHardPatchText,0
  11893.     DC.W    GD_TagHardPatch
  11894.     DC.L    PLACETEXT_RIGHT,0,0
  11895.     DC.W    191,102,26,11
  11896.     DC.L    TagSAPensText,0
  11897.     DC.W    GD_TagSAPens
  11898.     DC.L    PLACETEXT_RIGHT,0,0
  11899.     DC.W    364,102,26,11
  11900.     DC.L    TagBlackBorderText,0
  11901.     DC.W    GD_TagBlackBorder
  11902.     DC.L    PLACETEXT_RIGHT,0,0
  11903.     DC.W    7,115,26,11
  11904.     DC.L    TagCenterScrText,0
  11905.     DC.W    GD_TagCenterScr
  11906.     DC.L    PLACETEXT_RIGHT,0,0
  11907.     DC.W    191,115,26,11
  11908.     DC.L    TagInterleaveText,0
  11909.     DC.W    GD_TagInterleave
  11910.     DC.L    PLACETEXT_RIGHT,0,0
  11911.     DC.W    364,115,26,11
  11912.     DC.L    TagLikeWBText,0
  11913.     DC.W    GD_TagLikeWB
  11914.     DC.L    PLACETEXT_RIGHT,0,0
  11915.     DC.W    7,128,26,11
  11916.     DC.L    TagSystemPensText,0
  11917.     DC.W    GD_TagSystemPens
  11918.     DC.L    PLACETEXT_RIGHT,0,0
  11919.  
  11920.  
  11921. TagScrWinGTags:
  11922.     DC.L    GTCB_Scaled,-1
  11923.     DC.L    GT_Underscore,'_'
  11924.     DC.L    TAG_DONE
  11925.     DC.L    GTCB_Scaled,-1
  11926.     DC.L    GT_Underscore,'_'
  11927.     DC.L    TAG_DONE
  11928.     DC.L    GTCB_Scaled,-1
  11929.     DC.L    GT_Underscore,'_'
  11930.     DC.L    TAG_DONE
  11931.     DC.L    GTCB_Scaled,-1
  11932.     DC.L    GT_Underscore,'_'
  11933.     DC.L    TAG_DONE
  11934.     DC.L    GT_Underscore,'_'
  11935.     DC.L    TAG_DONE
  11936.     DC.L    GTTX_Border,1
  11937.     DC.L    TAG_DONE
  11938.     DC.L    GT_Underscore,'_'
  11939.     DC.L    TAG_DONE
  11940.     DC.L    GT_Underscore,'_'
  11941.     DC.L    TAG_DONE
  11942.     DC.L    STRINGA_ExitHelp,1
  11943.     DC.L    GTST_EditHook,StrEditHook
  11944.     DC.L    GTST_MaxChars,80
  11945.     DC.L    GT_Underscore,'_'
  11946.     DC.L    TAG_DONE
  11947. TagScrTaskList
  11948.     DC.L    GTLV_Labels,0
  11949. TagScrTaskName
  11950.     DC.L    GTLV_ShowSelected,0
  11951.     DC.L    GT_Underscore,'_'
  11952.     DC.L    TAG_DONE
  11953.     DC.L    GT_Underscore,'_'
  11954.     DC.L    TAG_DONE
  11955.     DC.L    GT_Underscore,'_'
  11956.     DC.L    TAG_DONE
  11957.     DC.L    STRINGA_ExitHelp,1
  11958.     DC.L    GTST_EditHook,StrEditHook
  11959.     DC.L    GTIN_Number,0
  11960.     DC.L    GTIN_MaxChars,5
  11961.     DC.L    STRINGA_Justification,GACT_STRINGCENTER
  11962.     DC.L    GT_Underscore,'_'
  11963.     DC.L    TAG_DONE
  11964.     DC.L    STRINGA_ExitHelp,1
  11965.     DC.L    GTST_EditHook,StrEditHook
  11966.     DC.L    GTIN_Number,0
  11967.     DC.L    GTIN_MaxChars,5
  11968.     DC.L    STRINGA_Justification,GACT_STRINGCENTER
  11969.     DC.L    GT_Underscore,'_'
  11970.     DC.L    TAG_DONE
  11971.     DC.L    GTCB_Scaled,-1
  11972.     DC.L    GT_Underscore,'_'
  11973.     DC.L    TAG_DONE
  11974.     DC.L    GTCB_Scaled,-1
  11975.     DC.L    GT_Underscore,'_'
  11976.     DC.L    TAG_DONE
  11977.     DC.L    GTCB_Scaled,-1
  11978.     DC.L    GT_Underscore,'_'
  11979.     DC.L    TAG_DONE
  11980.     DC.L    GTCB_Scaled,-1
  11981.     DC.L    GT_Underscore,'_'
  11982.     DC.L    TAG_DONE
  11983.     DC.L    GTCB_Scaled,-1
  11984.     DC.L    GT_Underscore,'_'
  11985.     DC.L    TAG_DONE
  11986.     DC.L    GTCB_Scaled,-1
  11987.     DC.L    GT_Underscore,'_'
  11988.     DC.L    TAG_DONE
  11989.     DC.L    GTCB_Scaled,-1
  11990.     DC.L    GT_Underscore,'_'
  11991.     DC.L    TAG_DONE
  11992.  
  11993.  
  11994.  
  11995. GD_TagScreensOn                        EQU    0
  11996. GD_TagNoMon                            EQU    1
  11997. GD_TagAutoScr                          EQU    2
  11998. GD_TagNoFnt                            EQU    3
  11999. GD_TagScrMode                          EQU    4
  12000. GD_TagScrModeType                      EQU    5
  12001. GD_AddTagTsk                           EQU    6
  12002. GD_RemTagTsk                           EQU    7
  12003. GD_TagTaskName                         EQU    8
  12004. GD_TagTaskList                         EQU    9
  12005. GD_SelectTagTask                       EQU    10
  12006. GD_AddTagGlobal                        EQU    11
  12007. GD_TagScrWidth                         EQU    12
  12008. GD_TagScrHeight                        EQU    13
  12009. GD_TagHardPatch                        EQU    14
  12010. GD_TagSAPens                           EQU    15
  12011. GD_TagBlackBorder                      EQU    16
  12012. GD_TagCenterScr                        EQU    17
  12013. GD_TagInterleave                       EQU    18
  12014. GD_TagLikeWB                           EQU    19
  12015. GD_TagSystemPens                       EQU    20
  12016.  
  12017.  
  12018.  
  12019.  
  12020.  
  12021.  
  12022.  
  12023.  
  12024.  
  12025. **********************************************************************
  12026. *              Definitions for Clock Definition Window               *
  12027. **********************************************************************
  12028. ClockDefWinWindowTags:
  12029. ClockDefWinL:
  12030.     DC.L    WA_Left,0
  12031. ClockDefWinT:
  12032.     DC.L    WA_Top,0
  12033. ClockDefWinW:
  12034.     DC.L    WA_Width,0
  12035. ClockDefWinH:
  12036.     DC.L    WA_Height,0
  12037.     DC.L    WA_IDCMP,0
  12038.     DC.L    WA_Flags,WFLG_DRAGBAR!WFLG_DEPTHGADGET!WFLG_CLOSEGADGET!WFLG_SMART_REFRESH!WFLG_ACTIVATE
  12039. ClockDefWinWG:
  12040.     DC.L    WA_Gadgets,0
  12041.     DC.L    WA_Title,ClockDefWinWTitle
  12042.     DC.L    WA_ScreenTitle,WindowScrTitle
  12043. ClockDefWinSC:
  12044.     DC.L    WA_PubScreen,0
  12045.     DC.L    TAG_DONE
  12046.  
  12047.  
  12048. ClockDefWinGTypes:
  12049.     DC.W    CHECKBOX_KIND
  12050.     DC.W    CHECKBOX_KIND
  12051.     DC.W    CHECKBOX_KIND
  12052.     DC.W    CHECKBOX_KIND
  12053.     DC.W    CHECKBOX_KIND
  12054.     DC.W    CHECKBOX_KIND
  12055.     DC.W    CHECKBOX_KIND
  12056.     DC.W    CHECKBOX_KIND
  12057.     DC.W    CYCLE_KIND
  12058.     DC.W    PALETTE_KIND
  12059.     DC.W    PALETTE_KIND
  12060.     DC.W    PALETTE_KIND
  12061.     DC.W    PALETTE_KIND
  12062.     DC.W    SLIDER_KIND
  12063.  
  12064. ClockDefWinNGads:
  12065.     DC.W    29,4,26,11
  12066.     DC.L    DisplayText,0
  12067.     DC.W    GD_Display
  12068.     DC.L    PLACETEXT_RIGHT,0,0
  12069.     DC.W    269,4,26,11
  12070.     DC.L    DisplayWinText,0
  12071.     DC.W    GD_DisplayWin
  12072.     DC.L    PLACETEXT_RIGHT,0,0
  12073.     DC.W    29,19,26,11
  12074.     DC.L    ShowTimeText,0
  12075.     DC.W    GD_ShowTime
  12076.     DC.L    PLACETEXT_RIGHT,0,0
  12077.     DC.W    29,49,26,11
  12078.     DC.L    ShowDateText,0
  12079.     DC.W    GD_ShowDate
  12080.     DC.L    PLACETEXT_RIGHT,0,0
  12081.     DC.W    269,19,26,11
  12082.     DC.L    ShowDayText,0
  12083.     DC.W    GD_ShowDay
  12084.     DC.L    PLACETEXT_RIGHT,0,0
  12085.     DC.W    29,34,26,11
  12086.     DC.L    ShowSecsText,0
  12087.     DC.W    GD_ShowSecs
  12088.     DC.L    PLACETEXT_RIGHT,0,0
  12089.     DC.W    269,34,26,11
  12090.     DC.L    ShortDayText,0
  12091.     DC.W    GD_ShortDay
  12092.     DC.L    PLACETEXT_RIGHT,0,0
  12093.     DC.W    269,49,26,11
  12094.     DC.L    ShowMouseText,0
  12095.     DC.W    GD_ShowMouse
  12096.     DC.L    PLACETEXT_RIGHT,0,0
  12097.     DC.W    269,64,126,12
  12098.     DC.L    DateFormatText,0
  12099.     DC.W    GD_DateFormat
  12100.     DC.L    PLACETEXT_LEFT,0,0
  12101.     DC.W    142,95,123,20
  12102.     DC.L    TFrontPenText,0
  12103.     DC.W    GD_TFrontPen
  12104.     DC.L    PLACETEXT_LEFT,0,0
  12105.     DC.W    395,95,123,20
  12106.     DC.L    TBackPenText,0
  12107.     DC.W    GD_TBackPen
  12108.     DC.L    PLACETEXT_LEFT,0,0
  12109.     DC.W    142,119,123,20
  12110.     DC.L    GFrontPenText,0
  12111.     DC.W    GD_GFrontPen
  12112.     DC.L    PLACETEXT_LEFT,0,0
  12113.     DC.W    395,119,123,20
  12114.     DC.L    GBackPenText,0
  12115.     DC.W    GD_GBackPen
  12116.     DC.L    PLACETEXT_LEFT,0,0
  12117.     DC.W    269,80,126,12
  12118.     DC.L    GaugeWidthText,0
  12119.     DC.W    GD_GaugeWidth
  12120.     DC.L    PLACETEXT_LEFT,0,0
  12121.  
  12122. ClockDefWinGTags:
  12123.     DC.L    GTCB_Scaled,-1
  12124.     DC.L    GT_Underscore,'_'
  12125.     DC.L    TAG_DONE
  12126.     DC.L    GTCB_Scaled,-1
  12127.     DC.L    GT_Underscore,'_'
  12128.     DC.L    TAG_DONE
  12129.     DC.L    GTCB_Scaled,-1
  12130.     DC.L    GT_Underscore,'_'
  12131.     DC.L    TAG_DONE
  12132.     DC.L    GTCB_Scaled,-1
  12133.     DC.L    GT_Underscore,'_'
  12134.     DC.L    TAG_DONE
  12135.     DC.L    GTCB_Scaled,-1
  12136.     DC.L    GT_Underscore,'_'
  12137.     DC.L    TAG_DONE
  12138.     DC.L    GTCB_Scaled,-1
  12139.     DC.L    GT_Underscore,'_'
  12140.     DC.L    TAG_DONE
  12141.     DC.L    GTCB_Scaled,-1
  12142.     DC.L    GT_Underscore,'_'
  12143.     DC.L    TAG_DONE
  12144.     DC.L    GTCB_Scaled,-1
  12145.     DC.L    GT_Underscore,'_'
  12146.     DC.L    TAG_DONE
  12147.     DC.L    GTCY_Labels,DateFormatLabels
  12148.     DC.L    GT_Underscore,'_'
  12149.     DC.L    TAG_DONE
  12150. ScrDepth1
  12151.     DC.L    GTPA_Depth,2
  12152.     DC.L    GTPA_IndicatorWidth,30
  12153.     DC.L    GT_Underscore,'_'
  12154.     DC.L    TAG_DONE
  12155. ScrDepth2
  12156.     DC.L    GTPA_Depth,2
  12157.     DC.L    GTPA_IndicatorWidth,30
  12158.     DC.L    GT_Underscore,'_'
  12159.     DC.L    TAG_DONE
  12160. ScrDepth3
  12161.     DC.L    GTPA_Depth,2
  12162.     DC.L    GTPA_IndicatorWidth,30
  12163.     DC.L    GT_Underscore,'_'
  12164.     DC.L    TAG_DONE
  12165. ScrDepth4
  12166.     DC.L    GTPA_Depth,2
  12167.     DC.L    GTPA_IndicatorWidth,30
  12168.     DC.L    GT_Underscore,'_'
  12169.     DC.L    TAG_DONE
  12170.     DC.L    GTSL_Min,50
  12171.     DC.L    GTSL_Max,MAXBARLEN
  12172.     DC.L    GTSL_MaxLevelLen,6
  12173.     DC.L    GTSL_LevelFormat,GaugeWidthFormat
  12174.     DC.L    PGA_Freedom,LORIENT_HORIZ
  12175.     DC.L    GA_RelVerify,1
  12176.     DC.L    GT_Underscore,'_'
  12177.     DC.L    TAG_DONE
  12178.  
  12179.  
  12180. DateFormatLabels:
  12181.     DC.L    DateFormatLab0
  12182.     DC.L    DateFormatLab1
  12183.     DC.L    DateFormatLab2
  12184.     DC.L    DateFormatLab3
  12185.     DC.L    DateFormatLab4
  12186.     DC.L    DateFormatLab5
  12187.     DC.L    0
  12188. GaugeWidthFormat:
  12189.     DC.B    '%3.3ld',0
  12190.     CNOP     0,2
  12191.  
  12192.  
  12193. ScrMapBuff    ds.w    16
  12194.         EVEN
  12195.  
  12196.  
  12197. GD_Display                             EQU    0
  12198. GD_DisplayWin                          EQU    1
  12199. GD_ShowTime                            EQU    2
  12200. GD_ShowDate                            EQU    3
  12201. GD_ShowDay                             EQU    4
  12202. GD_ShowSecs                            EQU    5
  12203. GD_ShortDay                            EQU    6
  12204. GD_ShowMouse                           EQU    7
  12205. GD_DateFormat                          EQU    8
  12206. GD_TFrontPen                           EQU    9
  12207. GD_TBackPen                            EQU    10
  12208. GD_GFrontPen                           EQU    11
  12209. GD_GBackPen                            EQU    12
  12210. GD_GaugeWidth                          EQU    13
  12211.  
  12212.  
  12213.  
  12214.  
  12215.  
  12216.  
  12217. **********************************************************************
  12218. *                      Names for the qualifiers                      *
  12219. **********************************************************************
  12220. QualifierTab    dc.l    IEQUALIFIER_LSHIFT,LShiftName
  12221.         dc.l    IEQUALIFIER_RSHIFT,RShiftName
  12222.         dc.l    IEQUALIFIER_CAPSLOCK,CapsName
  12223.         dc.l    IEQUALIFIER_CONTROL,ControlName
  12224.         dc.l    IEQUALIFIER_LALT,LAltName
  12225.         dc.l    IEQUALIFIER_RALT,RAltName
  12226.         dc.l    IEQUALIFIER_LCOMMAND,LCommandName
  12227.         dc.l    IEQUALIFIER_RCOMMAND,RCommandName
  12228.         dc.l    IEQUALIFIER_MIDBUTTON,MidButtonName
  12229.         dc.l    IEQUALIFIER_RBUTTON,RightButtonName
  12230.         dc.l    IEQUALIFIER_LEFTBUTTON,LeftButtonName
  12231. NUMQUALIFIER    EQU    ((*-QualifierTab)/8)
  12232.  
  12233. CodeTab        dc.l    $45,EscName
  12234.         dc.l    $50,F1Name
  12235.         dc.l    $51,F2Name
  12236.         dc.l    $52,F3Name
  12237.         dc.l    $53,F4Name
  12238.         dc.l    $54,F5Name
  12239.         dc.l    $55,F6Name
  12240.         dc.l    $56,F7Name
  12241.         dc.l    $57,F8Name
  12242.         dc.l    $58,F9Name
  12243.         dc.l    $59,F10Name
  12244.         dc.l    $41,BackName
  12245.         dc.l    $46,DelName
  12246.         dc.l    $5f,HelpKeyName
  12247.         dc.l    $42,TabName
  12248.         dc.l    $4c,UpName
  12249.         dc.l    $4d,DownName
  12250.         dc.l    $4f,LeftName
  12251.         dc.l    $4e,RightName
  12252.         dc.l    $44,ReturnName
  12253.         dc.l    $40,SpaceName
  12254.         dc.l    $43,EnterName
  12255.         dc.l    IECODE_LBUTTON,LeftButtonName
  12256.         dc.l    IECODE_RBUTTON,RightButtonName
  12257.         dc.l    IECODE_MBUTTON,MidButtonName
  12258. NUMCODES    EQU    ((*-CodeTab)/8)
  12259.  
  12260. LShiftName    dc.b    "LSHIFT",0
  12261. RShiftName    dc.b    "RSHIFT",0
  12262. CapsName    dc.b    "CAPSLOCK",0
  12263. ControlName    dc.b    "CONTROL",0
  12264. LAltName    dc.b    "LALT",0
  12265. RAltName    dc.b    "RALT",0
  12266. LCommandName    dc.b    "LCOMMAND",0
  12267. RCommandName    dc.b    "RCOMMAND",0
  12268. LeftButtonName    dc.b    "LBUTTON",0
  12269. RightButtonName    dc.b    "RBUTTON",0
  12270. MidButtonName    dc.b    "MBUTTON",0
  12271. EscName        dc.b    "ESCAPE",0
  12272. F1Name        dc.b    "F1",0
  12273. F2Name        dc.b    "F2",0
  12274. F3Name        dc.b    "F3",0
  12275. F4Name        dc.b    "F4",0
  12276. F5Name        dc.b    "F5",0
  12277. F6Name        dc.b    "F6",0
  12278. F7Name        dc.b    "F7",0
  12279. F8Name        dc.b    "F8",0
  12280. F9Name        dc.b    "F9",0
  12281. F10Name        dc.b    "F10",0
  12282. BackName    dc.b    "BACKSPACE",0
  12283. DelName        dc.b    "DELETE",0
  12284. HelpKeyName    dc.b    "HELP",0
  12285. TabName        dc.b    "TAB",0
  12286. UpName        dc.b    "UP",0
  12287. DownName    dc.b    "DOWN",0
  12288. LeftName    dc.b    "LEFT",0
  12289. RightName    dc.b    "RIGHT",0
  12290. ReturnName    dc.b    "RETURN",0
  12291. SpaceName    dc.b    "SPACE",0
  12292. EnterName    dc.b    "ENTER",0
  12293.         EVEN
  12294.  
  12295.  
  12296.  
  12297.  
  12298.  
  12299. **********************************************************************
  12300. *              Definitions for userdefinable filenames               *
  12301. **********************************************************************
  12302. DirPrefsName    dc.b    "KCX.PREFS",0
  12303. EnvPrefsName    dc.b    "ENV:KCX/KCX.PREFS",0
  12304. EnvArcPrefsName    dc.b    "ENVARC:KCX/KCX.PREFS",0
  12305. EnvArcDirName    dc.b    "ENVARC:KCX",0
  12306.         EVEN
  12307.  
  12308.  
  12309.  
  12310. **********************************************************************
  12311. *                         HotKey definitions                         *
  12312. **********************************************************************
  12313. DefaultHotKeys    dc.l    DefPopUpKey,DefBillHotKey,DefFormHotKey
  12314.         dc.l    DefPageHotKey,DefShellHotKey
  12315.         dc.l    DefUmlautHotKey,DefSnapHotKey,DefDoBlankHotKey
  12316.         dc.l    DefDumpHotKey,DefCenterHotKey,DefSelScrHotKey
  12317.         dc.l    DefClockHotKey,DefFKeyHotKey,DefSunHotKey
  12318. DefPopUpKey    dc.b    "LCOMMAND HELP",0
  12319. DefBillHotKey    dc.b    "ALT SHIFT B",0
  12320. DefFormHotKey    dc.b    "ALT SHIFT F",0
  12321. DefPageHotKey    dc.b    "RALT HELP",0
  12322. DefShellHotKey    dc.b    "ALT SHIFT S",0
  12323. DefUmlautHotKey    dc.b    "ALT SHIFT U",0
  12324. DefSnapHotKey    dc.b    "ALT SHIFT G",0
  12325. DefDoBlankHotKey    dc.b    "ALT SHIFT D",0
  12326. DefDumpHotKey    dc.b    "ALT NUMERICPAD *",0
  12327. DefCenterHotKey    dc.b    "ALT SHIFT X",0
  12328. DefSelScrHotKey    dc.b    "LSHIFT ESC",0
  12329. DefClockHotKey    dc.b    "ALT SHIFT C",0
  12330. DefFKeyHotKey    dc.b    "ALT SHIFT K",0
  12331. DefSunHotKey    dc.b    "ALT SHIFT M",0
  12332.         EVEN
  12333.  
  12334.  
  12335. **********************************************************************
  12336. *                     Defines for HotKey-Window                      *
  12337. **********************************************************************
  12338. HotKeyGadStat    dc.l    PopUpKey        ; CX_PopKey
  12339.         dc.l    BillHotKey        ; Bill
  12340.         dc.l    FormatHotKey        ; Formatter
  12341.         dc.l    PageHotKey        ; Page
  12342.         dc.l    ShellHotKey        ; UserShell
  12343.         dc.l    UmlautHotKey        ; Map Umlauts
  12344.         dc.l    SnapHotKey        ; Snap memory
  12345.         dc.l    DoBlankHotKey        ; Immediate Blank
  12346.         dc.l    DumpHotKey        ; Display dump
  12347.         dc.l    CenterHotKey        ; Center a screen
  12348.         dc.l    SelScrHotKey        ; Select Screen to pop up
  12349.         dc.l    ClockHotKey        ; On/Off clock
  12350.         dc.l    FKeyHotKey        ; On/Off FKeys
  12351.         dc.l    SunHotKey        ; On/Off SunMouse
  12352. HOTKEYNUM    EQU    ((*-HotKeyGadStat)/4)
  12353. HotKeyGadVars    dc.l    MainHandle,ControlTitle,PopUpFilter
  12354.         dc.l    BillHandle,BillTitle,BillFilter
  12355.         dc.l    FormHandle,FormTitle,FormFilter
  12356.         dc.l    0,0,PageFilter
  12357.         dc.l    0,0,ShellFilter
  12358.         dc.l    0,0,UmlautFilter
  12359.         dc.l    0,0,SnapFilter
  12360.         dc.l    0,0,DoBlankFilter
  12361.         dc.l    PrintHandle,PrintTitle,DumpFilter
  12362.         dc.l    0,0,CenterFilter
  12363.         dc.l    SelScrHandle,SelScrTitle,SelScrFilter
  12364.         dc.l    0,0,ClockFilter
  12365.         dc.l    0,0,FKeyFilter
  12366.         dc.l    0,0,SunFilter
  12367.  
  12368.  
  12369.  
  12370.  
  12371. **********************************************************************
  12372. *              Pointers to window-structures for saving              *
  12373. **********************************************************************
  12374. WindowHandles    dc.w    MainHandle,SetHandle,MiscHandle
  12375.         dc.w    AlarmHandle,QualHandle,CycleHandle
  12376.         dc.w    BlankHandle,ClockDefHandle,MouseHandle
  12377.         dc.w    HotKeyHandle,FKeyHandle,FormHandle
  12378.         dc.w    BillHandle
  12379.         dc.w    PrefsHandle,LogHandle,ProgHandle
  12380.         dc.w    ClockHandle,PrintHandle,LockHandle,TagScrHandle
  12381. WINDOWNUM    EQU    (*-WindowHandles)>>1
  12382. WindowRoutines    dc.l    HandleMainWin,HandleSetWin,HandleMiscWin,HandleAlarmWin,0
  12383.         dc.l    HandleCycleWin,HandleBlankWin,HandleClockDefWin,HandleMouseWin
  12384.         dc.l    HandleHotKeyWin,HandleFKeyWin,0,0,HandlePrefsWin,0,0,0,0
  12385.         dc.l    HandleLockWin,HandleTagScrWin
  12386. WindowGads    dc.w    MainGads,SetGads,MiscGads,AlarmGads,0,CycleGads,BlankGads
  12387.         dc.w    ClockDefGads,MouseGads,HotKeyGads,FKeyGads,0,0,PrefsGads,0,0,0,0
  12388.         dc.w    LockGads,TagScrGads
  12389.  
  12390. **********************************************************************
  12391. *  Text attribute for gadgets. We are stubborn. Let`s take topaz :-) *
  12392. **********************************************************************
  12393. GadgetTxtAttr    dc.l    FontName
  12394.         dc.w    8
  12395.         dc.b    FS_NORMAL
  12396.         dc.b    FPF_ROMFONT
  12397. FontName    dc.b    "topaz.font",0
  12398.         EVEN
  12399.  
  12400.  
  12401. **********************************************************************
  12402. *                     Attribute for System text                      *
  12403. **********************************************************************
  12404. SysTxtAttr    dc.l    0
  12405.         dc.w    0
  12406.         dc.b    FS_NORMAL
  12407.         dc.b    0
  12408.  
  12409.  
  12410. **********************************************************************
  12411. *                Chunkdefinitions for the Prefs file                 *
  12412. **********************************************************************
  12413. VersChunk    dc.w    VERNUM,REVNUM
  12414. VersChunkSize    EQU    *-VersChunk
  12415.  
  12416.  
  12417. **********************************************************************
  12418. *                     Formatstrings for RawDoFmt                     *
  12419. **********************************************************************
  12420. TimeFormats    dc.l    FormLSec,FormLNSec,FormSSec,FormSNSec
  12421. FormLSec    dc.b    " %s %s %s ",0
  12422. FormLNSec    dc.b    " %s %s %.5s ",0
  12423. FormSSec    dc.b    " %.3s %s %s ",0
  12424. FormSNSec    dc.b    " %.3s %s %.5s ",0
  12425. ResultFormat    dc.b    "%-ld",0
  12426. ResultWinFormat    dc.b    "%d/%d",0
  12427. CostFormString    dc.b    "%5ld.%02ld",0
  12428. PerHourForm    dc.b    "%4ld.%02ld",0
  12429. LIntFormat    dc.b    "%ld",0
  12430. StringFormat    dc.b    "%s",0
  12431. FormLongSStr    dc.b    "%02ld:%02ld:%02ld",0
  12432. FormLongNSStr    dc.b    "%02ld:%02ld",0
  12433. ScrDimmFormat    dc.b    "%2.2ld",0
  12434. FormMemString    dc.b    " C: %7ld   F: %8ld ",0
  12435. DoubleMemString    dc.b    "  C: %ld   F: %ld ",0
  12436. MousePosForm    dc.b    "  X: %4.4d  Y: %4.4d",0
  12437.         EVEN
  12438. BillTotalCost    dc.l    0
  12439. BillDayCost    dc.l    0
  12440. BillDayPtr    dc.l    BillDayStr
  12441. BillMajor    dc.l    0
  12442. BillMinor    dc.l    0
  12443. BillDayStr    ds.b    10
  12444.  
  12445.  
  12446. VersionData    dc.l    VersionStr
  12447.         dc.l    VersionDat
  12448. VersionStr    REVISION
  12449.         dc.b    0
  12450. VersionDat    REVDATE
  12451.         dc.b    0
  12452.         EVEN
  12453.  
  12454.  
  12455.  
  12456.  
  12457.  
  12458.  
  12459.  
  12460. **********************************************************************
  12461. *                           Locale-Strings                           *
  12462. **********************************************************************
  12463. LOCALE_START
  12464. * CATALOG kcxprefs
  12465. * VERSION 2.5
  12466. * DATE 01.02.93
  12467. DefControlTitle        dc.b    "KCommodity : HotKey=",0
  12468. * D                "KCommodity : HotKey=",0
  12469. SetTitle        dc.b    "Settings",0
  12470. * D                "Einstellungen",0
  12471. MiscTitle        dc.b    "Miscellaneous",0
  12472. * D                "Verschiedenes",0
  12473. AlarmTitle        dc.b    "Alarm modes",0
  12474. * D                "Alarm Modi",0
  12475. DefQualTitle        dc.b    "Set qualifier for : ",0
  12476. * D                "Tastenkürzel für : ",0
  12477. CycleTitle        dc.b    "Cycle settings",0
  12478. * D                "Rollen",0
  12479. BlankTitle        dc.b    "Blanking",0
  12480. * D                "Verdunkeln",0
  12481. MouseTitle        dc.b    "Mouse",0
  12482. * D                "Maus",0
  12483. HotKeyTitle        dc.b    "HotKeys",0
  12484. * D                "HotKeys",0
  12485. FKeyTitle        dc.b    "Function Keys",0
  12486. * D                "Funktionstasten",0
  12487. PrefsTitle        dc.b    "Bill preferences",0
  12488. * D                "Konfiguration der Rechnung",0
  12489. LockTitle        dc.b    "Lock windows",0
  12490. * D                "Fenster sperren",0
  12491. TaskWinWTitle        dc.b    "Task-List : Select Task",0
  12492. * D                "Task-Liste : Task aussuchen",0
  12493. TagScrWinWTitle        dc.b    "TagScreens",0
  12494. * D                "TagScreens",0
  12495. ClockDefWinWTitle    dc.b    "Clock definitions",0
  12496. * D                "Uhr Einstellungen",0
  12497. MainWinDefMName0    dc.b    "Project",0
  12498. * D                "Projekt",0
  12499. MainWinDefMName1    dc.b    "Save Preferences",0
  12500. * D                "Einstellungen speichern",0
  12501. MainWinDefMComm1    dc.b    "S",0
  12502. * D                "S",0
  12503. MainWinDefMName3    dc.b    "About",0
  12504. * D                "Über",0
  12505. MainWinDefMComm3    dc.b    "?",0
  12506. * D                "?",0
  12507. SettingsText        dc.b    "Se_ttings...",0
  12508. * D                "Einstell_ungen...",0
  12509. MiscText        dc.b    "_Miscellaneous...",0
  12510. * D                "_Verschiedenes...",0
  12511. BlankingText        dc.b    "_Blanking...",0
  12512. * D                "Verdun_keln...",0
  12513. CyclingText        dc.b    "_Cycle settings...",0
  12514. * D                "_Rollen...",0
  12515. MouseText        dc.b    "Mo_use...",0
  12516. * D                "_Maus...",0
  12517. HotKeyText        dc.b    "Hot_Keys...",0
  12518. * D                "HotKe_ys...",0
  12519. FKeyText        dc.b    "_Function Keys...",0
  12520. * D                "_Funktionstasten...",0
  12521. FormatText        dc.b    "Fo_rmatter...",0
  12522. * D                "Format_ierer...",0
  12523. BillWinText        dc.b    "B_ill...",0
  12524. * D                "Re_chnung...",0
  12525. BillPrefsText        dc.b    "Bill _preferences...",0
  12526. * D                "Konfig. Rechnun_g...",0
  12527. AlarmText        dc.b    "A_larm modes...",0
  12528. * D                "Alarm M_odi...",0
  12529. ClockDefText        dc.b    "Clock setti_ngs...",0
  12530. * D                "U_hr Einstellungen...",0
  12531. HardCopyText        dc.b    "_Graphics dump...",0
  12532. * D                "Gra_phikausdruck...",0
  12533. LockWinsText        dc.b    "Lock _windows...",0
  12534. * D                "Fens_ter sperren...",0
  12535. TagScreensText        dc.b    "Tag Screens (_1)...",0
  12536. * D                "Tag Screens (_1)...",0
  12537. LoadPrefsText        dc.b    "L_oad Prefs...",0
  12538. * D                "Einst. _laden...",0
  12539. SavePrefsText        dc.b    "S_ave Prefs...",0
  12540. * D                "Einst. _sichern...",0
  12541. RemoveGadText        dc.b    "Remo_ve",0
  12542. * D                "E_ntfernen",0
  12543. EnableText        dc.b    "_Enable",0
  12544. * D                "_Aktivieren",0
  12545. DisableText        dc.b    "_Disable",0
  12546. * D                "_Deaktivieren",0
  12547. QuitText        dc.b    "_Quit",0
  12548. * D                "_Ende",0
  12549. WriteEnvText        dc.b    "W_rite environment",0
  12550. * D                "_Umgebungsvariablen",0
  12551. WBFrontText        dc.b    "WB to _front",0
  12552. * D                "WB nach _vorne",0
  12553. MapUmlautsText        dc.b    '_Map "Umlauts"',0
  12554. * D                '"Umlaute" _konv.',0
  12555. MMBShiftText        dc.b    "MM_B-Shift",0
  12556. * D                "MM_B-Shift",0
  12557. NoClickText        dc.b    "Drive _NoClick",0
  12558. * D                "Lau_fwerk Kein-Klick",0
  12559. NoDisplayBeepText    dc.b    "No D_isplayBeep",0
  12560. * D                "Kein _DisplayBeep",0
  12561. MenuWrapText        dc.b    "Menu_Wrap",0
  12562. * D                "Menu_Wrap",0
  12563. StringMenuText        dc.b    "_String2Menu",0
  12564. * D                "String zu Men_ü",0
  12565. AvoidFlickerText    dc.b    "_Avoid Flicker",0
  12566. * D                "Flimmern verme_iden",0
  12567. ESCCloseText        dc.b    "_ESC Window Close",0
  12568. * D                "_ESC Fenster schließen",0
  12569. ESCQualText        dc.b    "ESC _Qualifier...",0
  12570. * D                "ESC K_ürzel...",0
  12571. KeyClickText        dc.b    "_Key-Click",0
  12572. * D                "_Tasten-Klick",0
  12573. ClickVolText        dc.b    "Click _volume       ",0
  12574. * D                "Klick _Lautstärke       ",0
  12575. UserShellText        dc.b    "_User-Shell command",0
  12576. * D                "_Benutzer-Shell Kommando",0
  12577. ExpWindowsText        dc.b    "Exploding _windows",0
  12578. * D                "Explodierende _Fenster",0
  12579. MouseCtrText        dc.b    "From/To _mouse",0
  12580. * D                "Von/Zur _Maus",0
  12581. ExpFramesText        dc.b    "E_xplode frames   ",0
  12582. * D                "E_xpl. Rahmen   ",0
  12583. ImpFramesText        dc.b    "_Implode frames   ",0
  12584. * D                "_Impl. Rahmen   ",0
  12585. SizeFramesText        dc.b    "_Size frames   ",0
  12586. * D                "Gr_ößen Rahmen   ",0
  12587. FullDragText        dc.b    "_Full drag",0
  12588. * D                "Komplett Be_wegen",0
  12589. DragQualText        dc.b    "_Dragging qualifier...",0
  12590. * D                "Bewegen Kür_zel...",0
  12591. MoveFramesText        dc.b    "M_ove frames   ",0
  12592. * D                "Bewe_gen Rahmen",0
  12593. AltModeText        dc.b    "Enter _ASCII",0
  12594. * D                "_ASCII eingeben",0
  12595. AltQualText        dc.b    "ASCII Qua_lifier",0
  12596. * D                "AS_CII Kürzel",0
  12597. AltQualLab0:        dc.b    "LEFT ALT",0
  12598. * D                "LINKE ALT",0
  12599. AltQualLab1:        dc.b    "CONTROL",0
  12600. * D                "CONTROL",0
  12601. AlarmOnText        dc.b    "_Alarm on",0
  12602. * D                "_Alarm an",0
  12603. AllHoursText        dc.b    "_Every hour",0
  12604. * D                "_Jede Stunde",0
  12605. ShowAlarmText        dc.b    "Show _requester",0
  12606. * D                "_Requester zeigen",0
  12607. AlarmTimeText        dc.b    "Alarm _time         ",0
  12608. * D                "Alarm _Zeit         ",0
  12609. AlSoundTypeText        dc.b    "_Sound type",0
  12610. * D                "Sound _Typ",0
  12611. AlarmSampleText        dc.b    "Select sa_mple",0
  12612. * D                "Sample _wählen",0
  12613. SampleNameText        dc.b    "Sample name",0
  12614. * D                "Sample Name",0
  12615. TestSampleText        dc.b    "Test sam_ple",0
  12616. * D                "Teste _Sample",0
  12617. AlSoundTypeLab0        dc.b    "DisplayBeep()",0
  12618. * D                "DisplayBeep()",0
  12619. AlSoundTypeLab1        dc.b    "IFF Sample",0
  12620. * D                "IFF Sample",0
  12621. OkText            dc.b    "Ok",0
  12622. * D                "Ok",0
  12623. CancelText        dc.b    "Cancel",0
  12624. * D                "Abbruch",0
  12625. CycleOnText        dc.b    "_Cycling enabled",0
  12626. * D                "Rollen _aktiv",0
  12627. FrontClickText        dc.b    "_Front clicks",0
  12628. * D                "_Vorne Klicks",0
  12629. MiddleClickText        dc.b    "_Middle clicks",0
  12630. * D                "_Mitte Klicks",0
  12631. BackClickText        dc.b    "_Back clicks",0
  12632. * D                "_Zurück Klicks",0
  12633. FrontKeyText        dc.b    "F_ront Key",0
  12634. * D                "V_orne Taste",0
  12635. MiddleKeyText        dc.b    "M_iddle Key",0
  12636. * D                "M_itte Taste",0
  12637. BackKeyText        dc.b    "B_ack Key",0
  12638. * D                "Z_urück Taste",0
  12639. BlankMouseText        dc.b    "_Blank mouse on keystroke",0
  12640. * D                "Maus _verdunkeln bei Tastendruck",0
  12641. ScrTimeText        dc.b    "_Screen time         ",0
  12642. * D                "_Screen Zeit         ",0
  12643. MouseTimeText        dc.b    "_Mouse time         ",0
  12644. * D                "_Maus Zeit         ",0
  12645. BlankTypeText        dc.b    "Blanker _type",0
  12646. * D                "Verdunklungs_typ",0
  12647. DimmFacText        dc.b    "_Dimm factor      ",0
  12648. * D                "Dimm _Faktor      ",0
  12649. BlankTypeLab0        dc.b    "Blanker",0
  12650. * D                "Verdunklung",0
  12651. BlankTypeLab1        dc.b    "Dimmer",0
  12652. * D                "Dimmer",0
  12653. WindowActText        dc.b    "_Window activation",0
  12654. * D                "Fenster _Aktivierung",0
  12655. SunMouseText        dc.b    "_Sun mouse",0
  12656. * D                "_Sun Maus",0
  12657. MouseAccelText        dc.b    "_Mouse accelerate",0
  12658. * D                "Maus_beschleunigung",0
  12659. AccelerateText        dc.b    "_Acceleration      ",0
  12660. * D                "Beschleunigun_g      ",0
  12661. ThresholdText        dc.b    "_Threshold      ",0
  12662. * D                "_Verzögerung      ",0
  12663. HoldXQualText        dc.b    "Hold _X qualifier",0
  12664. * D                "_X-Halten Kürzel",0
  12665. HoldYQualText        dc.b    "Hold _Y qualifier",0
  12666. * D                "_Y-Halten Kürzel",0
  12667. LeftyText        dc.b    "_LeftyMouse",0
  12668. * D                "linke/rechte Ma_us tauschen",0
  12669. HoldMouseText        dc.b    "_Hold mouse",0
  12670. * D                "Maus _halten",0
  12671. HotKeyListName0        dc.b    "CX_PopKey",0
  12672. * D                "CX_PopKey",0
  12673. HotKeyListName1        dc.b    "Bill",0
  12674. * D                "Rechnung",0
  12675. HotKeyListName2        dc.b    "Formatter",0
  12676. * D                "Formatierer",0
  12677. HotKeyListName3        dc.b    "Page",0
  12678. * D                "Seite",0
  12679. HotKeyListName4        dc.b    "UserShell",0
  12680. * D                "Benutzer-Shell",0
  12681. HotKeyListName5        dc.b    'Map "Umlauts"',0
  12682. * D                "Umlaute konvertieren",0
  12683. HotKeyListName6        dc.b    "Snap memory",0
  12684. * D                "Speicher Schnappschuß",0
  12685. HotKeyListName7        dc.b    "Immediate blank",0
  12686. * D                "Sofort verdunkeln",0
  12687. HotKeyListName8        dc.b    "Display dump",0
  12688. * D                "Graphik Ausdruck",0
  12689. HotKeyListName9        dc.b    "Center",0
  12690. * D                "Zentrieren",0
  12691. HotKeyListName10    dc.b    "Select Screen",0
  12692. * D                "Screen auswählen",0
  12693. HotKeyListName11    dc.b    "Clock/Memory on/off",0
  12694. * D                "Uhr/Speicher an/aus",0
  12695. HotKeyListName12    dc.b    "Function keys on/off",0
  12696. * D                "Funktionstasten an/aus",0
  12697. HotKeyListName13    dc.b    "SunMouse on/off",0
  12698. * D                "SunMouse an/aus",0
  12699. HotKeyListText        dc.b    "_HotKeys",0
  12700. * D                "_HotKeys",0
  12701. HotKeyDefText        dc.b    "_Def:",0
  12702. * D                "_Def:",0
  12703. F1Text            dc.b    "F_1",0
  12704. * D                "F_1",0
  12705. F2Text            dc.b    "F_2",0
  12706. * D                "F_2",0
  12707. F3Text            dc.b    "F_3",0
  12708. * D                "F_3",0
  12709. F4Text            dc.b    "F_4",0
  12710. * D                "F_4",0
  12711. F5Text            dc.b    "F_5",0
  12712. * D                "F_5",0
  12713. F6Text            dc.b    "F_6",0
  12714. * D                "F_6",0
  12715. F7Text            dc.b    "F_7",0
  12716. * D                "F_7",0
  12717. F8Text            dc.b    "F_8",0
  12718. * D                "F_8",0
  12719. F9Text            dc.b    "F_9",0
  12720. * D                "F_9",0
  12721. F10Text            dc.b    "F1_0",0
  12722. * D                "F1_0",0
  12723. FKeyQualText        dc.b    "_Qualifier",0
  12724. * D                "_Kürzel",0
  12725. FKeyActText        dc.b    "_Active",0
  12726. * D                "_Aktiv",0
  12727. FKeyOkText        dc.b    "_Ok",0
  12728. * D                "_Ok",0
  12729. FKeyCancelText        dc.b    "_Cancel",0
  12730. * D                "A_bbruch",0
  12731. FKeyQualLab0        dc.b    "None",0
  12732. * D                "Keines",0
  12733. FKeyQualLab1        dc.b    "Shift",0
  12734. * D                "Shift",0
  12735. FKeyQualLab2        dc.b    "Alt",0
  12736. * D                "Alt",0
  12737. FKeyQualLab3        dc.b    "Control",0
  12738. * D                "Control",0
  12739. EverCheapString        dc.b    "Always cheap on",0
  12740. * D                "Immer billig an",0
  12741. Normal1Text        dc.b    "Normal _1",0
  12742. * D                "Normal _1",0
  12743. Cheap1Text        dc.b    "Cheap _A",0
  12744. * D                "Billig _A",0
  12745. Normal2Text        dc.b    "Normal _2",0
  12746. * D                "Normal _2",0
  12747. Cheap2Text        dc.b    "Cheap _B",0
  12748. * D                "Billig _B",0
  12749. Normal3Text        dc.b    "Normal _3",0
  12750. * D                "Normal _3",0
  12751. Cheap3Text        dc.b    "Cheap _C",0
  12752. * D                "Billig _C",0
  12753. CostUnitText        dc.b    "Costs/_Unit",0
  12754. * D                "_Kosten/Einheit",0
  12755. StartNormText        dc.b    "Start _normal         ",0
  12756. * D                "Start _normal         ",0
  12757. StartCheapText        dc.b    "Start c_heap         ",0
  12758. * D                "Start b_illig         ",0
  12759. PopUpBillText        dc.b    "Pop up Bill _window",0
  12760. * D                "Rechnung _öffnen",0
  12761. ClearLogText        dc.b    "Clear _Log",0
  12762. * D                "_Log löschen",0
  12763. TotalSumText        dc.b    "_Display total sum",0
  12764. * D                "_Summe anzeigen",0
  12765. OpenBillText        dc.b    "Open Bill _on",0
  12766. * D                "Rec_hnung öffnen auf",0
  12767. SaveLogText        dc.b    "_Select...",0
  12768. * D                "_Wählen...",0
  12769. LogNameText        dc.b    "Log _Filename",0
  12770. * D                "Log _Dateiname",0
  12771. SundayText        dc.b    "Sunday _4",0
  12772. * D                "Sonntag _4",0
  12773. MondayText        dc.b    "Monday _5",0
  12774. * D                "Montag _5",0
  12775. TuesdayText        dc.b    "Tuesday _6",0
  12776. * D                "Dienstag _6",0
  12777. WednesdayText        dc.b    "Wednesday _7",0
  12778. * D                "Mittwoch _7",0
  12779. ThursdayText        dc.b    "Thursday _8",0
  12780. * D                "Donnerstag _8",0
  12781. FridayText        dc.b    "Friday _9",0
  12782. * D                "Freitag _9",0
  12783. SaturdayText        dc.b    "Saturday _0",0
  12784. * D                "Samstag _0",0
  12785. ActiveBillText        dc.b    "Ac_tivate on PopUp",0
  12786. * D                "Beim Öffnen akti_v",0
  12787. WindowNameText        dc.b    "E_ntry",0
  12788. * D                "_Eintrag",0
  12789. WindowListText        dc.b    "Locked _list",0
  12790. * D                "Gesperrt-_Liste",0
  12791. AddWindowText        dc.b    "_Add entry",0
  12792. * D                "_Neuer Eintrag",0
  12793. SelectWindowText    dc.b    "_Select entry",0
  12794. * D                "Eintrag _wählen",0
  12795. DeleteWindowText    dc.b    "_Delete entry",0
  12796. * D                "Eintrag l_öschen",0
  12797. LockListTypeText    dc.b    "Lis_t",0
  12798. * D                "Lis_te",0
  12799. LockListTypeLab0    dc.b    "Windows",0
  12800. * D                "Fenster",0
  12801. LockListTypeLab1    dc.b    "Tasks",0
  12802. * D                "Tasks",0
  12803. TagScreensOnText    dc.b    "_TagScreens activated",0
  12804. * D                "_TagScreens aktiv",0
  12805. TagNoMonText        dc.b    "_Monitor",0
  12806. * D                "_Monitor",0
  12807. TagAutoScrText        dc.b    "AutoS_croll",0
  12808. * D                "Auto_Scroll",0
  12809. TagNoFntText        dc.b    "_Font",0
  12810. * D                "_Zeichensatz",0
  12811. TagScrModeText        dc.b    "Screen Mo_de",0
  12812. * D                "Screen Mo_dus",0
  12813. TagScrHeightText    dc.b    "Screen H_eight",0
  12814. * D                "Screen H_öhe",0
  12815. AddTagTskText        dc.b    "_Add entry",0
  12816. * D                "_Neuer Eintrag",0
  12817. RemTagTskText        dc.b    "_Remove entry",0
  12818. * D                "Eintrag entfe_rnen",0
  12819. TagTaskNameText        dc.b    "Task _name",0
  12820. * D                "Tas_kname",0
  12821. TagTaskListText        dc.b    "Task _List",0
  12822. * D                "Task-_Liste",0
  12823. SelectTagTaskText    dc.b    "_Select entry",0
  12824. * D                "Eintrag _wählen",0
  12825. AddTagGlobalText    dc.b    "Add _global",0
  12826. * D                "_Global zufügen",0
  12827. TagScrWidthText        dc.b    "Screen _Width",0
  12828. * D                "Screen _Breite",0
  12829. TagHardPatchText    dc.b    "_Hard Patch",0
  12830. * D                "_Harter Patch",0
  12831. TagSAPensText        dc.b    "SA-_Pens",0
  12832. * D                "SA-_Pens",0
  12833. TagBlackBorderText    dc.b    "_BlackBorder",0
  12834. * D                "S_chwarzer Rand",0
  12835. TagCenterScrText    dc.b    "Aut_o Center",0
  12836. * D                "Auto-Zentr_ieren",0
  12837. TagInterleaveText    dc.b    "Interlea_ve",0
  12838. * D                "Interlea_ve",0
  12839. TagLikeWBText        dc.b    "Like Wor_kBench",0
  12840. * D                "Wie W_orkBench",0
  12841. TagSystemPensText    dc.b    "S_ystem Pens",0
  12842. * D                "S_ystem Stifte",0
  12843. DisplayText        dc.b    "_Display clock/mem",0
  12844. * D                "Zeit/Speicher _anzeigen",0
  12845. DisplayWinText        dc.b    "Display in _window",0
  12846. * D                "Im _Fenster zeigen",0
  12847. ShowTimeText        dc.b    "Show _time",0
  12848. * D                "_Zeit zeigen",0
  12849. ShowDateText        dc.b    "Sh_ow date",0
  12850. * D                "_Datum zeigen",0
  12851. ShowDayText        dc.b    "Show da_y",0
  12852. * D                "_Tag zeigen",0
  12853. ShowSecsText        dc.b    "Show _seconds",0
  12854. * D                "_Sekunden zeigen",0
  12855. ShortDayText        dc.b    "S_hort day string",0
  12856. * D                "_Kurzer Tagname",0
  12857. ShowMouseText        dc.b    "Show Mouse _X/Y",0
  12858. * D                "Maus _X/Y zeigen",0
  12859. DateFormatText        dc.b    "Dat_e Format",0
  12860. * D                "For_mat des Datums",0
  12861. TFrontPenText        dc.b    "Text _front",0
  12862. * D                "Text _Vordergr.",0
  12863. TBackPenText        dc.b    "Text _back",0
  12864. * D                "Text _Hintergr.",0
  12865. GFrontPenText        dc.b    "Gauge f_ront",0
  12866. * D                "Füll. V_ordergr.",0
  12867. GBackPenText        dc.b    "Gauge b_ack",0
  12868. * D                "Füll. H_intergr.",0
  12869. GaugeWidthText        dc.b    "_Gauge`s width      ",0
  12870. * D                "F_ülleistenbreite       ",0
  12871. DateFormatLab0:        dc.b    "MM-DD-YY",0
  12872. * D                "MM-TT-JJ",0
  12873. DateFormatLab1:        dc.b    "DD-MM-YY",0
  12874. * D                "TT-MM-JJ",0
  12875. DateFormatLab2:        dc.b    "MM.DD.YY",0
  12876. * D                "MM.TT.JJ",0
  12877. DateFormatLab3:        dc.b    "DD.MM.YY",0
  12878. * D                "TT.MM.JJ",0
  12879. DateFormatLab4:        dc.b    "DD-MMM-YY",0
  12880. * D                "TT-MMM-JJ",0
  12881. DateFormatLab5:        dc.b    "DD.MMM.YY",0
  12882. * D                "TT.MMM.JJ",0
  12883. ScrModeHead        dc.b    "Select new screen mode for task",0
  12884. * D                "Wählen Sie einen neuen Screen Modus für den Task",0
  12885. GlobalTagName        dc.b    "*** GLOBALTAG ***",0
  12886. * D                "*** GLOBALER TAG ***",0
  12887. DefLabel        dc.b    "Empty",0
  12888. * D                "Leer",0
  12889. ConWinDef        dc.b    "RAW:0/0//150/Telephone log info",0
  12890. * D                "RAW:0/0//150/Telefon Log Info",0
  12891. PressKey        dc.b    "Press any key to continue....",13,0
  12892. * D                "Drücken Sie eine Taste zum Fortfahren...",13,0
  12893. AboutText        dc.b    "KCommodity V%s (%s), by Kai Iske",10
  12894.             dc.b    "© 1992 Kai Iske, ShareWare",10,10
  12895.             dc.b    "User Interface done with the help of GadToolsBox V1.4 (37.177)",10,10
  12896.             dc.b    "To contact me write to :",10,10
  12897.             dc.b    "                        Kai Iske",10
  12898.             dc.b    "                   Brucknerstrasse 18",10
  12899.             dc.b    "                 6450 Hanau 1, Germany",10
  12900.             dc.b    "       Tel.: +49-(0)6181-850181 (After 6pm only)",10,10
  12901.             dc.b    "or use electronical mail :",10,10
  12902.             dc.b    "          FIDO:  2:249/40.11, Kai Iske",10
  12903.             dc.b    "          ZNET:  SNAKE%%HTH@AMNET.ZER",10
  12904.             dc.b    "          USENET:  kai@iske.adsp.sub.org",0
  12905. * D                "KCommodity V%s (%s), von Kai Iske",10
  12906. * D                "© 1992 Kai Iske, ShareWare",10,10
  12907. * D                "User Interface erstellt mit der Hilfe von GadToolsBox V1.4 (37.177)",10,10
  12908. * D                "Um mit mir in Kontakt zu kommen, schreiben Sie an :",10,10
  12909. * D                "                        Kai Iske",10
  12910. * D                "                   Brucknerstrasse 18",10
  12911. * D                "                 6450 Hanau 1, Deutschland",10
  12912. * D                "       Tel.: +49-(0)6181-850181 (Nur nach 18:00 Uhr)",10,10
  12913. * D                "oder benutzen Sie elektronische Post :",10,10
  12914. * D                "          FIDO  :  2:249/40.11, Kai Iske",10
  12915. * D                "          ZNET  :  SNAKE%%HTH@AMNET.ZER",10
  12916. * D                "          USENET:  kai@iske.adsp.sub.org",0
  12917. AboutGadgets        dc.b    "Ok",0
  12918. * D                "Ok",0
  12919. FileWinTxt        dc.b    "Would you like to have the LogFile displayed",10
  12920.             dc.b    "in a window or should I dump it to a file ?",0
  12921. * D                "Möchten Sie das LogFile in einem Fenster ausgeben,",10
  12922. * D                "oder soll ich es in eine Datei schreiben?",0
  12923. FileWinGads        dc.b    "File|Window",0
  12924. * D                "Datei|Fenster",0
  12925. FileWinHead        dc.b    "Select output file for LogFile",0
  12926. * D                "Wählen Sie die Ausgabedatei für das LogFile",0
  12927. UnusedStr        dc.b    "--- Unused entry ---",0
  12928. * D                "--- Unbenutzter Eintrag ---",0
  12929. SelectWinTxt        dc.b    "Click on window to use",0
  12930. * D                "Klicken Sie auf ein Fenster",0
  12931. WindowScrTitle        dc.b    "KCommodity by Kai Iske. ShareWare",0
  12932. * D                "KCommodity von Kai Iske. ShareWare",0
  12933. ESCQualTxt        dc.b    "ESC Window close",0
  12934. * D                "ESC Fenster schließen",0
  12935. DragQualTxt        dc.b    "Full dragging",0
  12936. * D                "Komplett bewegen",0
  12937. FrontClickTxt        dc.b    "Front click",0
  12938. * D                "Vorne Taste",0
  12939. BackClickTxt        dc.b    "Back click",0
  12940. * D                "Hinten Taste",0
  12941. MiddleClickTxt        dc.b    "Middle click",0
  12942. * D                "Mitte Taste",0
  12943. HoldXQualTxt        dc.b    "Hold X",0
  12944. * D                "Halte X",0
  12945. HoldYQualTxt        dc.b    "Hold Y",0
  12946. * D                "Halte Y",0
  12947. WinReActText        dc.b    "Window _reactivation",0
  12948. * D                "Fenster _Reaktivierung",0
  12949. LogFileHeader        dc.b    "Select new Log-File",0
  12950. * D                "Wählen Sie ein neues Log-File",0
  12951. PrefsLoadHeader        dc.b    "Load preferences",0
  12952. * D                "Einstellungen laden",0
  12953. PrefsSaveHeader        dc.b    "Save pereferences",0
  12954. * D                "Einstellungen sichern",0
  12955. AlSampLoadHead        dc.b    "Load Alarm sample",0
  12956. * D                "Alarm sample laden",0
  12957. CliHelpPage        dc.b    10,10,"KCommodity by Kai Iske. ShareWare",10
  12958.             dc.b    "USAGE : KCommodity",10
  12959.             dc.b    "  ToolType :          Description :              Default :",10
  12960.             dc.b    "  -----------------------------------------------------------------------",10
  12961.             dc.b    "  [SETTINGS=s]        New filename for Prefs     ENV:KCX/KCX.PREFS",10,10,10,0
  12962. * D                10,10,"KCommodity von Kai Iske. ShareWare",10
  12963. * D                "Benutzung : KCommodity",10
  12964. * D                "  ToolType :          Beschreibung :             Voreingestellt :",10
  12965. * D                "  -----------------------------------------------------------------------",10
  12966. * D                "  [SETTINGS=s]        Neuer Filename für Prefs   ENV:KCX/KCX.PREFS",10,10,10,0
  12967. FinalCostForm        dc.b    "                                                                  -----------",$0a
  12968.             dc.b    "                                                Total Sum            %ld.%02ld",$0a,0
  12969. * D                "                                                                  -----------",$0a
  12970. * D                "                                                Komplettsumme        %ld.%02ld",$0a,0
  12971. DayCostForm        dc.b    "                                                                  -----------",$0a
  12972.             dc.b    "                                         Sum for %s               %ld.%02ld",$0a,$0a,0
  12973. * D                "                                                                  -----------",$0a
  12974. * D                "                                       Summe für %s               %ld.%02ld",$0a,$0a,0
  12975. LOCALE_END
  12976.         INCLUDE    KCX.BSS
  12977.         END
  12978.